Webby

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Verwandte Artikel

Allgemeines

Das Webby ist ein kleines Terminal, das via Netzwerk auf das Internet zugreift und diverse Dienste anbietet. Das Webby wird/wurde unter anderem von Vodafone in Deutschland vertrieben (offensichtlich nur in weißer Gehäusevariante), laut Pressemitteilung des italienischen Importeurs Promelit beim koreanischen Hersteller Avantis in einer Stückzahl von mindestens 50000, nach den von Nutzern dieser Site beobachteten Seriennummern (SNs/IMEIs) sogar über 110000. In Frankreich ist das Gerät durch die Telefongesellschaft SFR vertrieben auch unter dem Namen Hubster bekannt, in Italien (dort inkl. RJ45-Ethernet-Anschluss, d.h. auch kabelgebundenes LAN statt nur drahtloses WLAN) mit seiner Hauptfunktion "Internet-Radiowecker" bezeichnet als "UEBBI Radiosveglia di Alice".

Das Webby verfügt über einen 3,5" Farb-TFT mit Touchscreen, Wireless-LAN, Stereo Lautsprecher und einen SD-Kartenslot. Nur durch interne Lötarbeiten können ein im Auslieferungszustand verborgener USB-Port und über Pegelwandler eine serielle Schnittstelle herausgeführt werden. Trotz 3*AA/Mignon-Batteriefach im Gehäuseboden scheint kein kabelloser Betrieb möglich.

Als Software kommt ein Linux zum Einsatz. Die meisten der Applikationen sind angewiesen auf den von einem Sever bereit gestellten Content. Nur wenige der Funktionen beruhen auf freien Standards und können ohne einen zentralen Server auskommen oder für andere Dienstanbieter konfiguriert werden.

Während ein Hinzufügen oder Ändern von Sendern nur serverseitig auf webby.vodafone.de vorgesehen war, machte dieser durch eine nur lange nicht gepflegte Senderliste (so daß diese bei Änderungen ihrer Stream-URLs jeweils nicht mehr gehört werden konnten) sowie durch wiederholte Ausfälle auf sich aufmerksam, deren bislang längster dazu führte, daß Vodafone seine Kunden auf eine eigentlich für einen kleinen Kreis von Entwicklern und Nutzern ausländischer Angebote privat bereitgestellte Alternativlösung verwies, während der Ausfall ihres eigenen bzw. von einem externen Partner betriebenen Systems erst nach mehrwöchigem Ausfall bemerkt und behoben worden sein soll (vgl. registrierungspflichtige sog. "Inoffizielle Vodafone Webby Gruppe" bei Facebook).

Features

Ein Auszug der Feature von der Herstellerseite unter: http://www.avantis.co.kr/02_05_en.htm

CPU AU1210-333MHz CPU Architektur: MIPS
Memory DDR2 SDRAM, 64MB

128Mx8 SLC TYPE NAND FLASH

Display TFT LCD 3.5", 320*240, 24bits color with Touch screen
Wireless WiFi 802.11 b/g, Verschlüsselung: WEP, WPA, WPA2
Interface

Ethernet RJ45 USB2.0 Embedded Microphone 2 Speaker x 1.5W, 8ohm 3.5mm phone Jack DC-in Jack Temperature Sensor SD/MMC Card socket

Buttons Hardkeys -widget, radio, alarm, menu, Reset
Software O/S Linux, Kernel 2.6.24
Multimedia Service WebTV,internet radio, MP3 Player, Video Player, Photo Album, Information service, Email, RSS, Voice message, Calendar, Widget(weather, News, traffic, finance), PIM Service, Voice message, Calendar
Codecs MP3, WMA and RealAudio
Video player FLV1 with H.263 video and MP3 audio
Photo Viewer JPEG, PNG, BMP, Slide show
Streamming RTSP/RTP/RTCP on TCP/IP or UDP/IP

Senderlisten

Es gibt im Detail unterschiedliche Wege um die ursprünglich konfigurierte Senderliste zu ersetzen, aber alle führen sie über den Update-Mechanismus per SD-Karte :

Die Erste ist die Firmware auf einem Windows-PC mit dem eigentlich für dbox2-Hacks gedachten NewTuxFlash.exe zu verändern und dann über SD-Karte einzugespielen. Hierfür wird in app.cramfs-milano in der Textdatei /milano/launcher/setup.init.db der Eintrag für sfr.host_name' auf den gewünschten Wert geändert.

Bei laufendem Webby einfach mit vi die /root/setup_data/setup.db zu editieren bringt nichts, weil der Webby bei jedem Start des Radios diese Werte mit den vom Hersteller/Vodafone vorgegebenen überschreibt.


Umstellung auf alternativen Server via SD-Karte

Bei Einlegen einer SD-Karte in das Webby wird auf dieser nach einem Update-Skript gesucht, welches falls unter dem Namen update.sh vorhanden automatisch gestartet wird. Dies macht sich ein Trick von T.E.N. zunutze, mit dessen Hilfe der vom Webby nach Sender(liste)n und Ticker-Feeds befragte Server einfach gewechselt werden kann (insbesondere bei Ausfall des ursprünglich eingestellten webby.vodafone.de, bisher z.T. schon über mehrere Wochen): sed -i ersetzt die URL, sync stellt sicher, daß die Schreiboperationen abgeschlossen werden, sodann wird das Webby automatisch neu gebootet. Die SD-Karte ist bei Wiedererscheinen des Vodafone-Logos zu entfernen. Nach Klick auf den Radio-Button meldet sich das Webby beim neu eingestellten Server an und zieht sich von dort eine Senderliste. Unter News wird eine Kontaktmöglichkeit zum Administrator der Alternativlösung angezeigt, über welche diesem die Gerätekennung mitgeteilt werden sollte (mit den Ziffern 49 beginnende Zahl, als IMEI auf der Bodenplatte des Webby abgedruckt bzw. über das Touchscreen-Menü abzurufen unter Menü/System/System/Systeminformationen/SN), um nutzerspezifische Wünsche erfüllen und über den üblichen Wechsel dynamischer IP-Adressen hinweg eingestellt lassen zu können sowie Konfigurationsfragen auch außerhalb öffentlicher Foren kurzfristig zu klären.

Da das Webby als Linux-System von DOS(-Nachfolgern) verschiedene Steuerzeichen für die Zeilenwechsel verwendet, sollte unter Windows statt des Notepad zum Erstellen oder Ändern des update.sh-Skriptes ein Texteditor wie z.B. Notepad+ oder Notepad++ (beide Open Source) verwendet werden, der auch den ANSI-Zeichensatz unterstützt.

Folgendermaßen sollte man vorgehen (Vorgang falls nicht unmittelbar erfolgreich ggf. während/nach WLAN-Anmeldung wiederholen):

  1. die Datei auf eine leere SD Card kopieren (sollte mit FAT32 formatiert und leer sein)
  2. Webby einschalten
  3. WLAN-Verbindung herstellen
  4. dann SD Card reinstecken (Display vom Webby wird schwarz)
  5. wenn das Vodafone Logo erscheint, SD Card gleich wieder herausnehmen
  6. nun abwarten bis das Webby komplett hochgefahren ist
  7. Fertig, Sender suchen

Benutzen des Servers von T.E.N.

Der Benutzer T.E.N. hat als erster das zwischen Webby und "Vodafone" beobachtete Protokoll in Perl (und ohne Erfordernis einer serverseitigen Datenbanksoftware) neu implementiert, sowie mit milano.dime.virgo.uberspace.de einen alternativen Server zur Verfügung gestellt, der eine gültige Senderliste und für per Gerätenummer bekannte Nutzer (nach Registrierung per eMail) bei Bedarf auch aus zusätzlichen Quellen bezogene oder serverseitig berechnete News, Horoskope und Wetterdaten ausliefern kann. Die Umstellung auf diesen Alternativserver kann sekundenschnell wie oben beschrieben erfolgen, ohne die Firmware neu flashen zu müssen. Das entsprechende Programm (Shell-Skript) findet sich unter: http://milano.dime.virgo.uberspace.de/update.sh

Inhalt der Datei:

#!/bin/sh
sed -i s/webby\.vodafone\.de/milano.dime.virgo.uberspace.de/ /root/setup_data/setup.db
sync
reboot

Zahlreiche neue oder von Vodafone bislang nicht gepflegte Sender konnten auf Anfrage im Thread http://www.mikrocontroller.net/topic/184196 bereits binnen weniger Stunden in die Liste von T.E.N. aufgenommen werden.

Für weitere Wünsche sind lediglich offizielle Bezeichnung, eine schlagwortartige Zusammenfassung der inhaltlichen Ausrichtung (z.B. Pop, Rock, Culture, Alternative, Etc) und Standort (Konvention: Stadt in ortsüblicher Schreibweise, ggf. auf lateinisches Alphabet transliteriert) des gewünschten Senders (vgl. jeweiliges Impressum) sowie ein Link möglichst direkt auf dessen gültigen MP3- oder WMA-Stream ohne Token (Nutzerkennung) erforderlich, da auf Webbies selbstverständlich keine Flash-Wrapper für den PC-Browser und derzeit auch AAC- oder Ogg-Vorbis-kodierte Streams nicht funktionieren.

Da kein Admin alle Sprachen der Welt beherrschen kann, ist zum Auffinden geeigneter Quellen diese Mithilfe der Hörer erforderlich.

Der richtige Stream findet sich regelmäßig in der letzten vor Beginn der Wiedergabe am PC-Player (gut geeignet ist etwa VLC von http://www.videolan.org) ausgelesenen PLS- oder M3U-Datei (Ausgabe inkl. etwaiger neuer URLs z.B. unter Linux mit lynx -mime_header -source, unter Windows mit einschlägigen "Streamrippern") bzw. auf dem ggf. vom Flash-Wrapper kontaktierten ShoutCast- oder IceCast-Server (wie mit ngrep oder tcpdump zu verfolgen), ggf. über Datenbanken wie http://vtuner.com/setupapp/guide/asp/BrowseStations/Searchform.asp?Submit1.x=0&Submit1.y=0&Submit1=Search&sSearchInput=Planet+Radio (Sendername als letzten Parameter einsetzen) oder https://forum.reciva.com - oft auch wenn der Sender eigentlich nur Flash-Wrapper, AAC- oder Ogg-Vorbis-Streams angegeben hatte.

Eigener Server/Webspace

Achtung - Das in diesem Abschnitt beschriebene liefert zwar interessante Informationen darüber was im Hintergrund abläuft, ist für den praktischen Einsatz aber unbedeutend. Ohne aktive Scripte auf dem Server (CGI/PERL/PHP usw.) geht es nicht.

Dieser Abschnitt fasst nur für technisch interessierte ein paar Forschungsergebnisse zusammen, die Grundlage für eigene Überlegungen und Experimente sein können.

Denkbar wäre es, eine eigene Senderliste zu erstellen und auf den eigenen Webspace bei einem Hoster oder einen eigenen Webserver in eurem LAN hochzuladen.

Die Senderliste ist in der Datei radio_list.cvs (einfache Textdatei) gespeichert, die bei Aktualisierungen komprimiert als radio_list.tar.gz entweder von Vodafone oder nach Patch vom T.E.N-Server geladen wird. Die Datei von T.E.N. ist eine gute Ausgangsbasis, die könnt ihr hier runterladen: http://milano.dime.virgo.uberspace.de/radio_list.tar.gz

In die radio_list.cvs tragt ihr eure eigenen Lieblingsstreams ein. Für euch uninteressante Sender könnt ihr löschen, dann aber die ganze Zeile.

Es sollten aber mp3-Streams sein, ogg-Streams werden vom Webby nicht unterstützt. Ein brauchbarer Texeditor, wie z.B. Notepad+ oder Notepad++ ist notwendig, da der orginal mit Windows mitgelieferte nur den ASCII-Zeichensatz beherrscht und Linux z.B. ANSI, OTF-8 verwendet.

Deine eigene radio_list.cvs wird dann zu einem .tar.gz-Archiv komprimiert und auf deinen Webspace z.B.nach "DeineInternetadresse.de/radio_list.tar.gz" hochgeladen.

Hier ein Beispiel wie die update.sh an deine Bedürfnisse angepasst werden kann.


Inhalt der Datei update.sh:

#!/bin/sh
sed -i s/webby\.vodafone\.de/DeineInternetadresse.de/ /root/setup_data/setup.db
sync
reboot

Achtung - Durch das "verbiegen" der URL funktionieren Wetter, News, Horoskop und die automatische Updatefunktion nicht mehr! Hier geht/ging es erst mal nur um die Senderliste.

Das bisher beschriebene ist aber nur ein Teilaspekt. Woher weiß der Webby wann eine neue Senderliste, Updates, News usw. vorhanden sind? Genau, durch den Abruf der Webseite http://webby.vodafone.de/radio/. Wenn der Webby die Links darin abruft liefert der Server ihm XML-Objekte. Diese XML-Objekte zieht sich der Webby rein und weiß danach woher er das Wetter usw. laden kann. Wer eigene Versuche anstellen möchte, sollte sich diese Verzeichnisstruktur, HTML und XML-Dateien genauer ansehen und versuchen das auf seinem eigenen Webspace nachzubilden. Ohne aktive Serverdienste oder Anpassungen der Webby-Firmware wird es aber wahrscheinlich nicht gehen. Im nächsten Kapitel werden euch zwei in PHP realisierte Lösungen vorgestellt die funktionieren.

Eigener Server (mittels PHP)

In diesem Foren Artikel [1] hat der Benutzer fbeek eine Sammlung von PHP-Skripten gepostet die genutzt werden kann um mittels PHP und SQL eine Datenbank aufzubauen aus der die Senderlisten für den Webby generiert werden können.

Mit dieser Möglichkeit ist es für jeden möglich seine Senderliste selber zu administrieren. Voraussetzung hierfür ist eine SQL fähige Datenbank und ein Webserver.

Für die Leute, welche keine SQL Datenbank verwenden wollen oder können hat fbeek hier [2] nochmal eine Standalone Version gepostet. Diese kommt ohne Datenbank aus, die Sender müssen nur in der radio_list.csv hinterlegt werden.

Hardware

Chipset 1.jpg

RMI AU1210 Prozessor [3]

WM9715G AC97 Audio Codec and touch controller [4]

SA58670ABS - 2.1 W/channel stereo class-D audio amplifier [5]

Der freie Platz ist wahrscheinlich für den Ethernetcontroller LAN9221 [6] (oder ähnlich, pinout passt jedenfalls) von SMSC der auch vom im Kernel geladenen Treiber unterstützt wird.

Serielle Schnittstelle

Hauptplatine, Displayseite, zwischen Flash und Kopfhöreranschluß:

133646.jpg

  1. TP14 -> TX (TTL Pegel)
  2. TP15 -> RX (TTL Pegel)

Bootloader kann mit Break-Signal angehalten werden.

dmesg Ausgabe [7]

JTAG

Die Pads über dem Prozessor sind der JTAG Port, von Links nach Rechts:

  1. - 3,3V
  2. - TCK
  3. - TMS
  4. - TDO
  5. - TDI
  6. - /TRST
  7. - GND

Getestet mit urjtag unter Linux und "wiggler" JTAG Kabel.

Erste Tests mit urjtag zeigen Reaktion, beschreibungsdatei für AMD/RMI/NetLogic Au1210 / Au1250 fehlen noch

I2C

Sockelplatine:

  1. TP6 - CLOCK
  2. TP7 - DATA

USB Anschluss nachrüsten

Anleitung: http://www.mikrocontroller.net/attachment/96943/ext-usb-komprimiert.pdf

Forumspost: http://www.mikrocontroller.net/topic/184196#1950387

Bilder:

Bild1-640.jpg Bild2-640.jpg Bild3-640.jpg Bild4-640.jpg

LAN Anschluss nachrüsten

Theoretisch müsste ein LAN Anschluss nachrüstbar sein. Dafür müsste ein LAN9221[8] Ethernet Controller von SMSC und diverse passive Bauteile (evtl. lt. Ref. Design [9]) eingelötet werden.

Ausserdem muss noch die 3.3V Spannungsversorgung des Controllers über U601 und U602 ergänzt werden. (zB.: LD39015M33R von ST [10]

Wie machbar das ist müsste allerdings noch geklärt werden.

Temperatursensor nachrüsten

Der Temperatursensor befindet sich auf der Platine im Standfuß. (siehe: 1. Bild zur USB Nachrüstung, zwischen Lautsprecheranschluß und Lötbrücke SFB100)

Benötigt wird:

  1. SU101: LM73CIMK-0[11] (Die -0 ist wichtig, wg. der device Adresse!)
  2. SC107: 100nF
  3. SR119: 4k7
  4. SR113: 4k7
  5. SR120: 4k7

TempSensor.jpg

Um die Temperaturanzeige im Blidschirmschoner zu realisieren, muss in app.cramfs-milano folgendes ersetzt werden:

  1. /milano/app/screensaver/screensaverwin.pyc -> gepatchte Version[12]
  2. launcher.pyc -> Hubster Version
  3. mzsys.pyc -> Hubster Version

Software

Allgemein

Das Webby läuft unter Linux (Kernel 2.6.24). Die Bedienoberfläche ist komplett in Python (Version 2.5) implementiert.

Backup Flash

Ein Backup der Flash Partitionen kann mit nanddump aus den Debian(mipsel port) mtd-utils[13] erstelt werden.

MTD Partitionen (Webby):

# cat /proc/mtd                                 Größe:
dev:    size   erasesize  name
mtd0: 00200000 00020000 "Bootloader"              2MB
mtd1: 00300000 00020000 "Kernel"                  3MB
mtd2: 00400000 00020000 "Root - Cramfs"           4MB
mtd3: 01e00000 00020000 "App - Cramfs"           30MB
mtd4: 00400000 00020000 "Factory - Yaffs2"        4MB
mtd5: 04300000 00020000 "Data - Yaffs2"          67MB  
mtd6: 00300000 00020000 "Emergency - Kernel"      3MB    
mtd7: 00f00000 00020000 "Emergency - Rootfs"     15MB

Dies enspricht den mtd Devices die in der dmesg ausgabe zu sehen sind:

/dev/mtdblock0 0x00000000-0x00200000 : "Bootloader"
/dev/mtdblock1 0x00200000-0x00500000 : "Kernel"
/dev/mtdblock2 0x00500000-0x00900000 : "Root - Cramfs"
/dev/mtdblock3 0x00900000-0x02700000 : "App - Cramfs"
/dev/mtdblock4 0x02700000-0x02b00000 : "Factory - Yaffs2"
/dev/mtdblock5 0x02b00000-0x06e00000 : "Data - Yaffs2"
/dev/mtdblock6 0x06e00000-0x07100000 : "Emergency - Kernel"
/dev/mtdblock7 0x07100000-0x08000000 : "Emergency - Rootfs"

In der Hubster Version fehlen die emergeny Partitionen, dafür ist dann die Data Partition entsprechend größer.

/dev/mtdblock5 0x02b00000-0x08000000 : "Data - Yaffs2"

Backup:

nanddump -nof <dateiname> -l <size> /dev/mtd<nummer>

Restore:

flash_erase /dev/mtd<nummer> 
nandwrite -p /dev/mtd<nummer> <dateiname>

Webby Kernel NAND-Image

Der Webby Kernel wird vom Hubster Update überschrieben. Den original Webby Kernel kann man hiermit[14] wiederherstellen. Die Datei kann in zImage-milano umbenannt werden.

Boot von SD / USB

Über das Halten der beiden äusseren Hardware Tasten beim Einschalten/Reset wird der Bootloader dazu veranlasst den Kernel von der ersten Partition (fat32 formatiert) eines USB Datenträgers oder einer SD Karte zu laden. Der Kernel muss gepackt als "vmlinux.gz" im Hauptverzeichnis liegen.

Der Yamon Bootloader im Webby (zumindest bei der Vodafone Version) ist sehr beschnitten und es ist nicht möglich Kernel-Bootparameter einzustellen. Die Bootparameter sind fest im Kernel einkompiliert:

root=/dev/romblock2 rootfstype=cramfs noinitrd rev=1.0.0 video=au1200fb:panel:bs console=ttyS0,115200

Wenn man also den Kernel von extern bootet wird trotzdem das rootfs aus dem NAND des Webby verwendet. Auf etwas unkonventionelle Weise kann man auch ohne rekompilierung den einkompilierten Bootparameter ändern. Dazu muss man den Kernel entpacken und mit einem Hex-Editor abändern. Der Bootparameter liegt einfach als String vor, der überschrieben werden kann. Achtung: Keine Zeichen einfügen, sondern nur überschreiben!

Je nachdem, ob man von SD oder USB booten will, müssen Teile des Bootparameters wie folgt geändert werden:

#SD
root=/dev/mmcblk0p2 rootfstype=ext2 

#USB
root=/dev/sda2 rootfstype=ext2 rootwait=10

Fertige Kernels (Umbenennen in vmlinux.gz!):

MMC-Boot[15]

USB-Boot[16]

Beim USB Boot ist der "rootwait" Parameter extrem wichtig, denn der USB Storage Treiber braucht fast 5 Sekunden bis er die Devices angelegt hat!

Die Partitionen auf dem USB Stick oder der SD Karte sollten wie folgt aussehen:

Partition Typ Filesystem Mountpoint Optionen Mindestgröße Inhalt
1 c vfat /boot (rw) 100MB Kernel
2 82 ext2 / (ro) 100MB Alles aus root.cramfs-milano + /factory Partition
3 82 ext2 /usr/prizm_mid rw,noatime,sync 100MB Alles aus app.cramfs-milano
4 82 ext2 /root rw,noatime,sync 100MB Alles aus /root

Alle Partitionen können natürlich auch größer sein. Partition 1 ist gedacht als "Transportpartition, wenn man zB Images von und nach Windows kopieren will.

Im /factory Verzeichnis befinden sich nur die Dateien mit der Seriennummer und der HW Adresse, dafür ist eine eigene Partition unnötig...

Die cramfs Images können unter Linux wie folgt gemountet werden:

mount -t cramfs -o loop app.cramfs-milano /mnt

Man sollte gleich noch die mtd-utils Dateien unter sbin nach <webby root>/bin kopieren, dann hat man auch das nanddump Kommando im System

Folgende Dateien müssen noch abgeändert werden:

/etc/init.d/rcS
dort müssen die mounts auf die SD Karte, bzw USB Storage umgestellt werden

#SD
/factory mount auskommentieren
mount -t ext2 /dev/sda3 /usr/prizm_mid -o rw,noatime,sync
mount -t ext2 /dev/sda4 /root -o rw,noatime,sync

#MMC
/factory mount auskommentieren
mount -t ext2 /dev/mmcblk0p3 /usr/prizm_mid -o rw,noatime,sync
mount -t ext2 /dev/mmcblk0p4 /root -o rw,noatime,sync

/etc/mdev.conf
Automount von SD oder MMC (je nachem vovon gebootet wird) auskommentieren

/etc/run_sd.sh
Alles auskommentieren bei SD Boot...

/usr/etc/rc.local
unterhalb von

telnetd -p 5112

könnte man noch

tcpsvd -vE 0.0.0.0 21 ftpd -w / &

einfügen, dann steht ein ftp Server zur Verfügung um Dateien vom und zum Webby zu kopieren

Es empfiehlt sich, die entsprechende Dateistruktur zuerst auf einem Rechner aufzubauen, dann die SD Karte oder den USB Stick entsprechend zu mounten, und dann die Dateien zu kopieren.

zb:

mount /dev/sdb2 /mnt
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
mkdir /mnt/usr
mkdir /mnt/usr/prizm_mid
mount /dev/sdb3 /mnt/usr/prizm_mid
mkdir /mnt/root
mount /dev/sdb4 /mnt/root

cp -r .../webby_usb_boot/* /mnt

Modifikation der cramfs Images

Windows:

(besonders für kleinere Eingriffe geeignet)

  1. New Tuxbox FlashTools (Download hier)
  2. Das gewünschte Image mit den Tux FlashTools öffnen und bearbeiten. Wichtig: Nach jedem Schritt abspeichern! Also wenn ihr eine Textdatei editiert habt erst im Editor speichern und danach nochmal bei den Tux FlashTools!
  3. Fehlermeldung zur Imagegröße beim Abspeichern ignorieren (ist ja kein dbox-Image)

Linux:

Unter Linux könnt ihr die cramfs-Images mounten, wie im Kapitel "Boot von SD/USB" beschrieben, es gibt aber auch noch eine andere Möglichkeit:

Mit

cramfsck -x Verzeichnis  root.cramfs-milano

könnt ihr die einzelnen Cramfs-Images jeweils in ein eigenes Verzeichnis auspacken und die darin enthaltenen Dateien bearbeiten. Den Verzeichnisnamen in den ausgepackt werden soll könnt ihr frei wählen. Das Verzeichnis wird beim Auspacken automatisch erstellt. Diese Vorgehensweise eignet sich prima um Dateien zu verändern (z.B. .sh oder .py) oder Dateien hinzuzufügen oder zu entfernen, hat aber auch ihre Grenzen. Wichtig: Die Verzeichnisstruktur und Symlinks (die Dateien mit dem Pfeilsymbol) müssen unangetastet bleiben, sonst läuft es hinterher nicht mehr im Webby. Also keine Ordner darin verschieben!!

Wenn ihr eure Änderungen vorgenommen habt, könnt ihr den Verzeichnisinhalt (bei mir hieß das Verzeichnis root.cramfs) wieder zu einem Cramfs-Image zusammenfassen.

mkfs.cramfs root.cramfs root.cramfs-milano

Das klappt auf diese Weise bei allen 3 Images, also root, app und emergency. Danach den ganzen Kram zusammen mit den anderen Dateien aus der Vodafone Firmware (update.sh rc.local usw.) auf eine SD-Karte kopieren und ab damit in den Webby.

Root-Passwort ändern

Der einfachste Weg das Root-Passwort nach euren Wünschen dauerhaft zu ändern ist es, die Cramfs-Images wie in den beiden vorangegangen Abschnitten beschrieben, zu bearbeiten. Unser besonderes Interesse gilt jetzt der Datei /etc/shadow die sich im root.cramfs-milano befindet. Diese Datei müssen wir editieren und in der Zeile hinter root: den Hash (die kryptische Zeichenkette) durch unsere eigene ersetzen.

Eueren eigenen Hash erzeugt ihr auf einem Linux-PC mit:

mkpasswd -m sha-512 euerPasswort

und fügt ihn in der /etc/shadow Zeile 1 ein:

root:selbsterzeugterHash:14582:0:99999:7:::

Falls ihr kein Linux auf eurem PC habt, könnt ihr euch auch wie in diesem Kommentar beschrieben http://www.mikrocontroller.net/topic/184196#2463378 (Punkte 1 bis 4) beim Webby einen temporären Telnet-Zugang hacken und den Hash auf dem Webby selbst erzeugen. Dort ist der Befehl allerdings minimal anders: (ohne Bindestrich zwischen sha und 512)

mkpasswd -m sha512 euerPasswort

Telnet Zugang

Telnet Port: 5112 (ab Hersteller)

Python Debug Console Port: 2850

Terminaleinstellungen (putty): "RAW", "locale line editing", "implicit LF in every CR",

Quellcode

Von Avantis sind hier [17] die Sourcen, bzw. Patches für busybox, den Kernel, WPA Supplicant und vor Allem für die Applikationen (z.B. Radio, RSS Reader, Screensaver) verfügbar!

Wichtig: Die app sourcen entsprechen nicht 100% dem aktuellen Zustand! Das fällt z.B. besonders bei den Setting auf!

Die .pyc Dateien können einfach durch ihre .py Entsprechung ersetzt werden. Normalerweise werden .py-Dateien beim importieren automatisch compiliert, und als .pvc abgespeichert, was beim Webby allerdings nicht funktioniert, da die Dateien im ReadOnly-Dateisystem liegen.

Bugfix: Rauschen bei abgeschaltetem Bildschirm (maavin)

Drei Dateien müssen ersetzt werden:

  1. .../app/screensaver/screensaverwin.pyc[18] (ohne Temperaturanzeige)
  2. .../app/screensaver/screensaverwin.pyc[19] (mit Temperaturanzeige)
  3. .../app/audioplayer/scheduleplayerwin.pyc[20]
  4. .../app/videoplayer/alarmplayerwin.pyc[21]

Dazu benennt man am besten die alten Dateien in z.B. *_old.pyc um.

Python

Die auf dem Webby vorhandene Version ist Python 2.5. Eigene .py-Scripte können über

pyqrun run scriptname.py

gestartet werden.

Der import eigener Scripte ist mit:

pyqrun import scriptname.py

möglich.