Webby: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
K (Textersetzung - „</c>“ durch „</syntaxhighlight>“)
 
(30 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 40: Zeile 40:
| Buttons || Hardkeys -widget, radio, alarm, menu, Reset
| Buttons || Hardkeys -widget, radio, alarm, menu, Reset
|-
|-
| Software || O/S Linux
| 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
| 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
Zeile 55: Zeile 55:


== Senderlisten ==
== Senderlisten ==
Es gibt bisher drei bekannte Möglichkeiten um die ursprünglich konfigurierte Senderliste zu ersetzen: Entweder wird [http://www.mikrocontroller.net/topic/184196#2068108 die Firmware so auf einem Windows-PC mit dem eigentlich für dbox2-Hacks gedachten NewTuxFlash.exe verändert eingespielt, daß ein root-Zugriff per telnet-Shell über Port 5112 mit dann bekanntem Passwort und dadurch das Ändern des konfigurierten ''sfr.host_name'' mittels ''vi /root/setup_data/setup.db'' (einem "vorsintflutlichen" Editor für Fortgeschrittene) ermöglicht], oder es wird der Update-Mechanismus per SD-Karte verwendet, um [http://www.mikrocontroller.net/topic/184196#2463378 durch einen von dort mit unterdrückter Passwortabfrage gestarteten telnetd temporär eine solche Shell zu öffnen] bzw. (im einfachsten Fall) wie nachstehend beschrieben [http://www.mikrocontroller.net/topic/184196#2471068 die URL des Servers automatisch programmgesteuert austauschen und Webby rekonfiguriert neu starten zu lassen].
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 [http://www.mikrocontroller.net/topic/184196#2068108 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 ===
=== Umstellung auf alternativen Server via SD-Karte ===
Zeile 80: Zeile 85:


Inhalt der Datei:
Inhalt der Datei:
<c>
<syntaxhighlight lang="c">
#!/bin/sh
#!/bin/sh
sed -i s/webby\.vodafone\.de/milano.dime.virgo.uberspace.de/ /root/setup_data/setup.db
sed -i s/webby\.vodafone\.de/milano.dime.virgo.uberspace.de/ /root/setup_data/setup.db
sync
sync
reboot
reboot
</c>
</syntaxhighlight>


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.
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.
Zeile 97: Zeile 102:
=== Eigener Server/Webspace ===
=== Eigener Server/Webspace ===


'''Achtung - Das in diesem Abschnitt beschriebene ist für den praktischen Einsatz durch die Allgemeinheit nicht geeignet!'''
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.
Dieser Abschnitt fasst nur für technisch interessierte ein paar Forschungsergebnisse zusammen, die Grundlage für eigene Überlegungen und Experimente sein können.


Ihr könnt auch eine eigene Senderliste erstellen und auf euren eigenen Webspace bei einem x-beliebigem Provider oder einen eigenen Webserver in eurem LAN hochladen.
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 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
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 einfach eure eigenen Lieblingsstreams ein. Die koreanischen Sender am Anfang kannst du auch ruhig raus löschen, wenn dich die Schriftzeichen verwirren und du ohnehin nicht beabsichtigst die zu hören.
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.


Sollten aber mp3-Streams sein, ogg-Streams werden von Webby noch 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.  
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 komprimierst du anschließend wieder zu einem tar.gz-Archiv und lädst die Datei auf deinen Webspace hoch. In meinem Beispiel auf "DeineInternetadresse.de/radio_list.tar.gz"
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.


In der update.sh paßt du "DeineInternetadresse.de" an deine Bedürfnisse wie folgt an:
Hier ein Beispiel wie die update.sh an deine Bedürfnisse angepasst werden kann.




Inhalt der Datei update.sh:
Inhalt der Datei update.sh:
<c>
<syntaxhighlight lang="c">
#!/bin/sh
#!/bin/sh
sed -i s/webby\.vodafone\.de/DeineInternetadresse.de/ /root/setup_data/setup.db
sed -i s/webby\.vodafone\.de/DeineInternetadresse.de/ /root/setup_data/setup.db
sync
sync
reboot
reboot
</c>
</syntaxhighlight>


Achtung - Durch das "verbiegen" der URL funktionieren Wetter, News, Horoskop und  die automatische Updatefunktion nicht mehr! Hier geht/ging es erstmal nur um die Senderliste.
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/ und die dort verlinkten XML-Dateien. Diese XML-Dateien 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. Durch Anpassungen in den XML-Dateien auf eurem Webspace sollten sich auch die anderen Dienste (Wetter, News usw.) wieder nutzbar machen.
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) ===
=== Eigener Server (mittels PHP) ===
In diesem Foren Artikel [http://www.mikrocontroller.net/topic/184196#2530518] 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.
In diesem Foren Artikel [http://www.mikrocontroller.net/topic/184196#2530518] 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. Vorraussetzung hierfür ist eine SQL fähige Datenbank und ein Webserver.
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 [http://www.mikrocontroller.net/topic/184196#2539456] nochmal eine Standalone Version gepostet. Diese kommt ohne Datenbank aus, die sender müssen nur in der radio_list.csv hinterlegt werden.
Für die Leute, welche keine SQL Datenbank verwenden wollen oder können hat fbeek hier [http://www.mikrocontroller.net/topic/184196#2539456] nochmal eine Standalone Version gepostet. Diese kommt ohne Datenbank aus, die Sender müssen nur in der radio_list.csv hinterlegt werden.


== Hardware ==
== Hardware ==
Zeile 223: Zeile 228:
== Software ==
== Software ==
=== Allgemein ===
=== Allgemein ===
Das Webby läuft unter Linux (Kernel 2.6.24). Die Bedienoberfläche ist komplett in Python implementiert.
Das Webby läuft unter Linux (Kernel 2.6.24). Die Bedienoberfläche ist komplett in Python (Version 2.5) implementiert.


=== Backup Flash ===
=== Backup Flash ===
Zeile 229: Zeile 234:


MTD Partitionen (Webby):
MTD Partitionen (Webby):
<c>
<syntaxhighlight lang="c">
# cat /proc/mtd                                Größe:
# cat /proc/mtd                                Größe:
dev:    size  erasesize  name
dev:    size  erasesize  name
Zeile 240: Zeile 245:
mtd6: 00300000 00020000 "Emergency - Kernel"      3MB     
mtd6: 00300000 00020000 "Emergency - Kernel"      3MB     
mtd7: 00f00000 00020000 "Emergency - Rootfs"    15MB
mtd7: 00f00000 00020000 "Emergency - Rootfs"    15MB
</c>
</syntaxhighlight>


Dies enspricht den mtd Devices die in der dmesg ausgabe zu sehen sind:
Dies enspricht den mtd Devices die in der dmesg ausgabe zu sehen sind:
<c>
<syntaxhighlight lang="c">
/dev/mtdblock0 0x00000000-0x00200000 : "Bootloader"
/dev/mtdblock0 0x00000000-0x00200000 : "Bootloader"
/dev/mtdblock1 0x00200000-0x00500000 : "Kernel"
/dev/mtdblock1 0x00200000-0x00500000 : "Kernel"
Zeile 252: Zeile 257:
/dev/mtdblock6 0x06e00000-0x07100000 : "Emergency - Kernel"
/dev/mtdblock6 0x06e00000-0x07100000 : "Emergency - Kernel"
/dev/mtdblock7 0x07100000-0x08000000 : "Emergency - Rootfs"
/dev/mtdblock7 0x07100000-0x08000000 : "Emergency - Rootfs"
</c>
</syntaxhighlight>


In der Hubster Version fehlen die emergeny Partitionen, dafür ist dann die Data Partition entsprechend größer.
In der Hubster Version fehlen die emergeny Partitionen, dafür ist dann die Data Partition entsprechend größer.
<c>/dev/mtdblock5 0x02b00000-0x08000000 : "Data - Yaffs2"</c>
<syntaxhighlight lang="c">/dev/mtdblock5 0x02b00000-0x08000000 : "Data - Yaffs2"</syntaxhighlight>


Backup:
Backup:
<c>nanddump -nof <dateiname> -l <size> /dev/mtd<nummer></c>
<syntaxhighlight lang="c">nanddump -nof <dateiname> -l <size> /dev/mtd<nummer></syntaxhighlight>


Restore:
Restore:
<c>
<syntaxhighlight lang="c">
flash_erase /dev/mtd<nummer>  
flash_erase /dev/mtd<nummer>  
nandwrite -p /dev/mtd<nummer> <dateiname>
nandwrite -p /dev/mtd<nummer> <dateiname>
</c>
</syntaxhighlight>


==== Webby Kernel NAND-Image ====
==== Webby Kernel NAND-Image ====
Der Webby Kernel wird vom Hubster Update überschrieben. Das den Original Webby Kernel kann man hiermit[http://www.mikrocontroller.net/attachment/135814/kernel_webby_nand.img] wiederherstellen. Die Datei kann in ''zImage-milano'' umbenannt werden.
Der Webby Kernel wird vom Hubster Update überschrieben. Den original Webby Kernel kann man hiermit[http://www.mikrocontroller.net/attachment/135814/kernel_webby_nand.img] wiederherstellen. Die Datei kann in ''zImage-milano'' umbenannt werden.


=== Boot von SD / USB ===
=== Boot von SD / USB ===
Zeile 278: Zeile 283:
Kernel-Bootparameter einzustellen. Die Bootparameter sind fest im Kernel einkompiliert:
Kernel-Bootparameter einzustellen. Die Bootparameter sind fest im Kernel einkompiliert:


<c>root=/dev/romblock2 rootfstype=cramfs noinitrd rev=1.0.0 video=au1200fb:panel:bs console=ttyS0,115200</c>
<syntaxhighlight lang="c">root=/dev/romblock2 rootfstype=cramfs noinitrd rev=1.0.0 video=au1200fb:panel:bs console=ttyS0,115200</syntaxhighlight>


Wenn man also den Kernel von extern bootet wird trotzdem das rootfs aus dem NAND des Webby verwendet. Auf etwas unkonventionelle Weise
Wenn man also den Kernel von extern bootet wird trotzdem das rootfs aus dem NAND des Webby verwendet. Auf etwas unkonventionelle Weise
Zeile 286: Zeile 291:
Je nachdem, ob man von SD oder USB booten will, müssen Teile des Bootparameters wie folgt geändert werden:  
Je nachdem, ob man von SD oder USB booten will, müssen Teile des Bootparameters wie folgt geändert werden:  


<c>
<syntaxhighlight lang="c">
#SD
#SD
root=/dev/mmcblk0p2 rootfstype=ext2  
root=/dev/mmcblk0p2 rootfstype=ext2  
Zeile 292: Zeile 297:
#USB
#USB
root=/dev/sda2 rootfstype=ext2 rootwait=10
root=/dev/sda2 rootfstype=ext2 rootwait=10
</c>
</syntaxhighlight>


Fertige Kernels (Umbenennen in vmlinux.gz!):
Fertige Kernels (Umbenennen in vmlinux.gz!):
Zeile 323: Zeile 328:


Die cramfs Images können unter Linux wie folgt gemountet werden:
Die cramfs Images können unter Linux wie folgt gemountet werden:
<c>
<syntaxhighlight lang="c">
mount -t cramfs -o loop app.cramfs-milano /mnt
mount -t cramfs -o loop app.cramfs-milano /mnt
</c>
</syntaxhighlight>


Man sollte gleich noch die mtd-utils Dateien unter sbin nach <webby root>/bin kopieren, dann hat man auch das nanddump Kommando im System
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:
Folgende Dateien müssen noch abgeändert werden:
<c>
<syntaxhighlight lang="c">
/etc/init.d/rcS
/etc/init.d/rcS
dort müssen die mounts auf die SD Karte, bzw USB Storage umgestellt werden
dort müssen die mounts auf die SD Karte, bzw USB Storage umgestellt werden
Zeile 349: Zeile 354:
/etc/run_sd.sh
/etc/run_sd.sh
Alles auskommentieren bei SD Boot...
Alles auskommentieren bei SD Boot...
</c>
 
/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
 
</syntaxhighlight>


Es empfiehlt sich, die entsprechende Dateistruktur zuerst auf einem Rechner aufzubauen, dann die SD Karte oder den USB Stick entsprechend zu mounten,
Es empfiehlt sich, die entsprechende Dateistruktur zuerst auf einem Rechner aufzubauen, dann die SD Karte oder den USB Stick entsprechend zu mounten,
Zeile 355: Zeile 372:


zb:
zb:
<c>
<syntaxhighlight lang="c">
mount /dev/sdb2 /mnt
mount /dev/sdb2 /mnt
mkdir /mnt/boot
mkdir /mnt/boot
Zeile 367: Zeile 384:
cp -r .../webby_usb_boot/* /mnt
cp -r .../webby_usb_boot/* /mnt


</c>
</syntaxhighlight>


=== Modifikation der cramfs Images ===
=== Modifikation der cramfs Images ===


=== Windows: ===  
==== Windows: ====  
(besonders für kleinere Eingriffe geeignet)
(besonders für kleinere Eingriffe geeignet)
#New Tuxbox FlashTools ([http://www.dbox2.info/download.php?catid=5&subcat=6 Download hier])
#New Tuxbox FlashTools ([http://www.dbox2.info/download.php?catid=5&subcat=6 Download hier])
Zeile 377: Zeile 394:
#Fehlermeldung zur Imagegröße beim Abspeichern ignorieren (ist ja kein dbox-Image)
#Fehlermeldung zur Imagegröße beim Abspeichern ignorieren (ist ja kein dbox-Image)


=== Linux: ===
==== 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
Mit
<c>cramfsck -x Verzeichnis  root.cramfs-milano</c>
<syntaxhighlight lang="c">cramfsck -x Verzeichnis  root.cramfs-milano</syntaxhighlight>
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, er 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!!
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.
Wenn ihr eure Änderungen vorgenommen habt, könnt ihr den Verzeichnisinhalt (bei mir hieß das Verzeichnis root.cramfs) wieder zu einem Cramfs-Image zusammenfassen.


<c>mkfs.cramfs root.cramfs root.cramfs-milano</c>
<syntaxhighlight lang="c">mkfs.cramfs root.cramfs root.cramfs-milano</syntaxhighlight>


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.
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:
<syntaxhighlight lang="c">
mkpasswd -m sha-512 euerPasswort
</syntaxhighlight>
und fügt ihn in der /etc/shadow Zeile 1 ein:
<syntaxhighlight lang="c">
root:selbsterzeugterHash:14582:0:99999:7:::
</syntaxhighlight>
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)
<syntaxhighlight lang="c">
mkpasswd -m sha512 euerPasswort
</syntaxhighlight>


=== Telnet Zugang ===
=== Telnet Zugang ===
Telnet Port: 5112
Telnet Port: 5112 (ab Hersteller)


Python Debug Console Port: 2850
Python Debug Console Port: 2850
Zeile 401: Zeile 440:
'''Wichtig: Die app sourcen entsprechen nicht 100% dem aktuellen Zustand! Das fällt z.B. besonders bei den Setting auf!'''
'''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.
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) ====
====  Bugfix: Rauschen bei abgeschaltetem Bildschirm (maavin) ====
Zeile 408: Zeile 447:
#.../app/screensaver/screensaverwin.pyc[http://www.mikrocontroller.net/attachment/133581/screensaverwin.py] (ohne Temperaturanzeige)
#.../app/screensaver/screensaverwin.pyc[http://www.mikrocontroller.net/attachment/133581/screensaverwin.py] (ohne Temperaturanzeige)
#.../app/screensaver/screensaverwin.pyc[http://www.mikrocontroller.net/attachment/135530/screensaverwin.py] (mit Temperaturanzeige)
#.../app/screensaver/screensaverwin.pyc[http://www.mikrocontroller.net/attachment/135530/screensaverwin.py] (mit Temperaturanzeige)
#.../app/audioplayer/scheduleplayerwin.pyc[http://www.mikrocontroller.net/attachment/133598/scheduleplayerwin.py]
#.../app/audioplayer/scheduleplayerwin.pyc[http://www.mikrocontroller.net/attachment/137245/scheduleplayerwin.py]
#.../app/videoplayer/alarmplayerwin.pyc[http://www.mikrocontroller.net/attachment/133599/alarmplayerwin.py]
#.../app/videoplayer/alarmplayerwin.pyc[http://www.mikrocontroller.net/attachment/133599/alarmplayerwin.py]


Zeile 414: Zeile 453:


=== Python ===
=== Python ===
Die auf dem Webby vorhandene Version ist Python 2.5. Eigene .py-Scripte können über
<syntaxhighlight lang="c">
pyqrun run scriptname.py
</syntaxhighlight>
gestartet werden.
Der import eigener Scripte ist mit:
<syntaxhighlight lang="c">
pyqrun import scriptname.py
</syntaxhighlight>
möglich.


[[Kategorie:Datenübertragung]]
[[Kategorie:Datenübertragung]]

Aktuelle Version vom 23. Juni 2013, 21:26 Uhr

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.