PHILIPS VP5500 VoIP Telefon
Verwandte Artikel
- Konfiguration: http://www.mikrocontroller.net/topic/170483#new
- Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new
- http://das-labor.org/wiki/VP5500
- (Hack) http://spritesmods.com/?art=vpx500
- http://vp6500.bd8.nl/
Features
- Kamera-Auflösung 640x480 Pixel
- 30 Bilder pro Sekunde
- Kamera um 240° drehbar
- 5,6 cm (2,2") TFT-Display, 176x220 Pixel, 65000 Farben
- Audio-/Video-Ausgang (Cinch)
- integrierter Li-Ion Akku, 3,7 V-/1100 mAh
- englische und niederländische Menüsprache
- Software Qtopia Version 2.1.0
- Maße (LxBxH): 134x49x24 mm.
Hardware
- MCU: Freescale MC9328MX21 (ARM9) @ 266MHz
- PC-to-TV-Konverter-Chip: FS455LF
- WLAN: Marvell 88w8385, als Modul von WM-G-MR-01 (VP5500) / Philips BGW211, on-board (VP6500)
- SDRAM: 2 x K4S56163LF - 4M x 16Bit x 4 Banks
- Flash: 2 x ws128j0pbfw00 S29WS128J/064J 128/64 Megabit (8/4 M x 16-Bit) CMOS 1.8 Volt-only Simultaneous Read/Write, Burst Mode Flash Memory
- Kamera: dc-4626.a5 by chicony
- Display: Samsung LTS220QC (HD66772 Controller)
System-Takte
# cat /proc/systclk
System clocks state:
Ref clock : 32768Hz (int, premult by 512)
MPLL clock: 263999905Hz (computed: 264000000Hz)
SPLL clock: 163840000Hz (computed: 163840000Hz)
CPU clock : 263999905Hz (PERSC = 0)
Bus clock : 132000000Hz (BCLKDIV = 1, computed: 131999952Hz)
CSI clock : unknown (cannot read register CSICR1)
USB clock : 20480000Hz (USB_DIV = 7)
Wait State: CS0U[WSC] = 10, CS0U[WSC] = 48
loops_per_jiffy = 665058
Innenleben
Testpins
Original Liste von Tino herrunterladen.
| Testpin Nr. | verbunden zu | Funktion |
|---|---|---|
| 1 | LED | unbekannt |
| 2 | Kamera Pin 8 an CN1 | unbekannt |
| 3 | Pin 4 an IC1 | unbekannt |
| 4 | z.B. IC5 Pin V 18 | VDDA |
| 5 | GND | GND |
| 6 | NC | NC |
| 7 | Pin E 16 an IC5 | SAP_CLK |
| 8 | Pin 1 an CN 3 | Lautsprecher |
| 9 | Pin 2 an CN 3 | Lautsprecher |
| 10 | Pin an CN 4 | ? |
| 11 | Pin an CN 4 | ? |
| 12 | Pin an CN 4 | ? |
| 13 | Pin L 16 an IC5 | UART2_TXD |
| 14 | Pin C 12 an IC5 | USBH1_RXDM |
| 15 | Pin H 12 an IC5 | USBH1_TXDP |
| 16 | Pin B 19 an IC5 | CSPI2_SS2 |
| 17 | Pin B16 an IC5 | SSI2_FS |
| 18 | Pin F 18 an IC5 | KP_ROW0 |
| 19 | Pin K 18 an IC5 | KP_COL4 |
| 20 | Pin L 19 an IC5 | UART3_TXD |
| 21 | Pin T 14 an IC5 | RESET_IN |
| 22 | geht an + des Kondensators neben IC6 | unbekannt |
| 23 | Pin D 13 an IC 9 | CLKOUT |
| 24 | Pin E 13 an IC 9 | CLKIN_P |
| 25 | Pin A 9 an IC 9 | DAC_D |
| 26 | Pin A 8 an IC 9 | DAC_A |
| 27 | Pin A 7 an IC 9 | DAC_B |
| 28 | Pin A 6 an IC 9 | DAC_C |
| 29 | Pin L 13 an IC 5 | UART1_TXD |
| 30 | Pin T 16 an IC 5 | BOOT1 |
| 31 | Pin K 10 an IC 5 | UART1_RXD |
| 32 | Pin U 17 an IC 5 | BOOT2 |
| 33 | Pin 9 an IC 23 | unbekannt |
| 34 | Pin D 19 an IC5 | CSPI2_SCLK |
| 35 | Pin C 14 an IC5 | TIN |
| 36 | Pin C 19 an IC5 | CSPI2_SS1 |
| 37 | Pin D 18 an IC5 | CSPI2_SS0 |
| 38 | Pin E 19 an IC5 | CSPI2_MOSI |
| 39 | Pin H 19 an IC5 | PWMO |
| 40 | Pin J 9 an IC 7 und IC 8 | VDD |
| 41 | Pin J 19 an IC 5 | KP_COL2 |
| 42 | Pin K 16 an IC 5 | KP_COL3 |
| 43 | Pin J 11 an IC 5 | KP_ROW2 |
| 44 | Pin J 17 an IC 5 | KP_COL1 |
| 45 | Pin G 19 an IC 5 | KP_ROW4 |
| 46 | Pin G 17 an IC 5 | KP_ROW3 |
| 47 | Pin D 5 an IC 10 und IC 11 | ACC |
| 48 | Pin G 16 an IC 5 | KP_ROW1 |
| 49 | Pin J 18 an IC 5 | KP_COL0 |
| 50 | Pin V 18 an IC 5 | VDDA |
| 51 | Pin 2 an CN KB-Stecker | ? |
| 52 | Pin 2 an IC 15 | ? |
| 53 | Pin 4 am LCD Stecker | ? |
| 54 | Pin E 17 an IC 5 | CSPI2_MISO |
| 55 | Pin 1,2,3,10,13 am LCD Stecker | ? |
| 56 | Pin 3 an IC 16 | ? |
| 57 | Pin U 10 an IC 5 | PC_PWRON |
| 58 | Pin 1 IC 18 | ? |
| 59 | an Diode über IC 16 | ? |
| 60 | Pin 3 an IC 25 | ? |
| 61 | Ladekontakt positiv | Ladegerät + |
| 62 | GND | GND |
| 63 | Akku Mittelkontakt | Akkustand? Temperatur? |
| 64 | Transistor unter IC 16 | ? |
| 65 | Pin 2 an IC 22 | ? |
| 66 | Pin 1,12,30 an IC 24 | VSS |
| 67 | Kondensator + unter IC 20 | ? |
| 68 | Pin 5 an IC 21 | ? |
| 69 | Pin 2 an IC 4 | ? |
| 70 | Pin 25 an IC24 | MCLK |
| 71 | Prozessor Pin W 14 | QVDD |
UART
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren. Jedoch startet dann das Telefon nicht vollständig (Fix siehe #Betrieb mit aktiverter serieller Schnittstelle)
- Spannungs-Pegel: 3.3V
- Baudrate: 115200kbps
- Stopbits: 1
- Flussteuerung: keine
VP5500
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich. Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.
VP6500
Die serielle Schnittstelle ist unter vom Akkufach aus zugänglich.
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.
JTAG
Hardware Modifikationen
Zerlegen des Telefons
- das Akkufach muss geöffnet und schrauben entfernt werden
- hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen
- Hierzu am besten mit einem schmalen kleinen Schraubendreher von der Stirnseite aus zwischen die Plastikteile fahren und vorsichtig aufhebeln und den Schraubendreher dabei weiter unter die Blende bewegen.
- nun kann einfach das rückseitige Schalenteil abgeschaubt werden
- das Entfernen des Frontschalenteils ist etwas tricky
- von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten
- etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.
- mitt einem sehr schmalen Schraubendreher in eine der Lücken fahren (anfange auf der Seite ohne Tasten) und den Schraubendreher nach innen drücken, so das der Druck in der Seite nach ausßen wirkt.
- Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritsich, wenn der Bügel ein wenig anbricht)
- Die Platine zu entfernen ist nicht ganz so schwierig.
- zuerst die Seite auf der keine Knöpfe sind
- vorichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten
- dann versuchen die Paltine seitlich nach oben aus dem Gehäuse zu ziehen
- dabei auf das Lautsprecherkabel und den Kamerakonnektor achten
- Zusammenbau genauso, nur umgedreht ;)
- nicht die Lautsprecher- und Kamera-Stecker vergessen
Buchse für Uart einbauen
Zunächst muss das Telefon zerlegt werden (#Zerlegen des Telefons) Um das Gehäuse nicht zu beeinträchtigen, habe ich mich dazu entschieden, alles so zu lassen wie es ist und nur kleine Buchsen einzubauen.
- Hierfür habe ich einreihige gedrehte IC-Sockel genutzt
- deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)
- ebendso auf die Pads ein wenig eingezinnt
- ausrichten und festlöten
- eine Reihe
- die zweite Reihe
- bei der Gehäuseöffnung über den Pins habe ich mit einer feinen Schlüsselfeile den Rand wenig aufgeweitet. An der Gummimatte hab ich nix geändert.
- fertig
- und im Einsatz
Das VPx500 'rooten'
Um Zugang zu den Dateien auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten
- serielle Schnittstelle
- telnet
telnet ist der komfortablere Weg. Um telnet zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf xx.xx.xx.xx zuzugreifen. Die Zeit wird über ntp von xx.xx.xx.xx bezogen. An dieser Stelle lässt sich durch einen eigenen DNS dieser Domainname auf einen eigenen Server umleiten. Daher ist im eignenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte 'Static DNS', ..). Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:
telnet 123.456.789.012 #
Passwort ist "toor". Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.
Unter Applications>Registration sind Netzwerk- und VoIP-Einstellungen zu finden.
Voice over IP (VoIP, SIP)
- http://de.wikipedia.org/wiki/IP-Telefonie
- http://de.wikipedia.org/wiki/Session_Initiation_Protocol
- http://de.wikipedia.org/wiki/H.323
- http://de.wikipedia.org/wiki/Softphone
Benutzer ist 103
Mit Ekiga konnte so per 103@xxx.xxx.xxx.xxx eine Sprachverbindung zum Telefon aufgebaut werden.
Software Modifikationen
Grundlagen
Bestimmte Aktionen werden immer wieder benötigt. Diese sollen hier kurz beschrieben werden.
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.
Dateien bearbeiten mit vi
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können. Für eine genaue Bedienung bitte Google benutzen. Die wichtigsten Bedienelemente werden hier kurz erläutert.
Datei Öffnen mit 'vi Dateipfad' vi kennt zwei Modi: Kommando- und Einfüge-Modus. i - wechselt in den Einfüge-Modus, in dem geschrieben werden kann
[Esc] wechselt zurück in den Kommandomodus. In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.
- x - löscht das Zeichen an Cursor position
- dd - löscht die ganze zeile
- :q! - schließt ohne zu speichern
- :w - speichert
- :wq - speichert und beenden
Dateien auf das Telefon laden
Um Daten von einem http-Server zu laden, benutzt man
wget url
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.
Um Daten von einem ftp-Server zu laden, benutzt man ftp. Auch hier muss vorher in das zielverzeichnis gewechselt werden.
ftp hostname
dann gegebenenfalls die Zugangsdaten eingeben und mittels 'cd' und 'ls' in das Entsprechende Verzeichnis auf dem FTP-Server wechseln und anschließend mittels
get dateiname
die Datei herunterladen.
Dateien vom Telefon herunterladen
Auch hier bietet sich ein FTP an. Mittels 'ftp hostname' verbinden, Benuzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels
put localeDatei
eine Lokale Datei hochladen.
Alternative Dropbear
Wurde der dropbear-ssh server installiert #Dropbear (SSH-Server) installieren können mittels eines Programms mit SCP-Unterstützung (zB. WinSCP für Windows) sehr komfortabel Dateien ausgetauscht werden.
Mit WinSCP können auch Dateien direkt bearbeitet werden. Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.
Backup
Backup des Flash
If you want to make a backup of your root partition, you can do as follows:
<c> echo '#!/bin/sh' > /tmp/backup.sh echo 'cat /dev/mtdb2 2>/dev/null' >> /tmp/backup.sh chmod 700 /tmp/backup.sh micro_inetd 31337 /tmp/backup.sh </c>
This'll make your device listen for incoming connections on port 31337. On your host system you may then simply run
nc ip.of.your.phone 31337 > fon_rootfs
et voilà, you got your rootfs packed into a file.
Note that the backed up file is not ext2, but a jffs2 formatted filesystem. These can't be handled by a simple "mount -o loop" as you'd have thought... so here's how you mount it:
<c> modprobe jffs2 modprobe mtdram total_size=32768 erase_size=128 modprobe mtdblock mkdir /tmp/phone-root mknod /tmp/phone-mtdb2 b 31 0 dd if=/your/backup/file of=/tmp/phone-mtdb2 mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root </c>
#Dateisystem herunterladen describes another way to dump the filesystem for closer examination.
Komplettes Backup
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.
cd /etc/rc.d/init.d wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe chmod +x /etc/rc.d/init.d/S91backup_pipe
Damit wird eine Art Backup-Server mit dem Boot gestartet. wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:
nc 192.168.1.3 31337 > fon_rootfs nc 192.168.1.3 31338 > fon_udata nc 192.168.1.3 31339 > fon_usettings nc 192.168.1.3 31340 > fon_bootld nc 192.168.1.3 31341 > fon_kernel
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_* Dateinamen könnt ihr natürlich auch frei vergeben.
fon_udata ist die /user_data Partition, fon_usertings dementsprechend die /user_settings Partition.
Der bootld Bereich enthält auch die Parameter. Um das später (falls überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in zwei Teile aufgeteilt werden. Der erste enthält dann den reinen Bootloader-Bereich, der zweite die Parameter. Wer's wirklich braucht für den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll ist das aber nicht, hat man den Bootloader erstmal mit was anderem überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen benutzen....
Zurückspielen der Backups
1) Man braucht ein (die) Backup-Image(s).
2) Serielle Verbindung zum Telefon
3) Akku abstecken, wieder anstecken.
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so das man im Bootloader landet. Dabei muss man recht schnell sein. Es sollte dann ein Prompt kommen:
<c> blob> </c>
5) Nun gibt man ein
xdownload param
Wobei 'param' der Teil ist, den man wiederherstellen will:
- blob - Bootloader (fon_bootld)
- param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)
- kernel - Der Kernel (fon_kernel)
- ramdisk - Das Root-Filesystem / (fon_rootfs)
- ramdisk2 - Das /user_data Filesystem (fon_udata)
- ramdisk3 - Das /user_settings Filesystem (fon_usettings)
Beim Backup ist blob + param in einer Datei, müsste man also ggf. erstmal aufsplitten.
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.
7) Kaffee trinken, auf's Klo gehen, mit Frau/Freundin/Mutter ein Gespräch anfangen.
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet wieder am "blob>" prompt. Nun gibt man
flash param
ein.
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.
10) "boot" eingeben. Da Telefon bootet nun normal.
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten (Akku kurz ab- und wieder anstöpseln)
Dateisystem herunterladen
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:
<c> echo '#! /bin/sh' > /tmp/backup.sh echo 'cd /' >> /tmp/backup.sh chmod 700 /tmp/backup.sh echo 'tar cf - bin boot dev etc home lib mnt opt root sbin tmp trace upgrade user_data user_settings usr var 2>/dev/null' >> /tmp/backup.sh micro_inetd 31340 /tmp/backup.sh </c>
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.
Auf einem anderen Linux system (oder cygwin) kann mittels <c>
nc telefon-Ip 31340 > file.tar
</c> die Datei abgerufen werden.
Der Vorgang dauert aber ein ganz paar Minuten.
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.
Betrieb mit aktiverter serieller Schnittstelle
Das 5500 scheint nicht komplett zu starten wenn man TIN auf low hat und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei
/usr/local/startup/daemon.sh
ziemlich am Anfang das TINDETECT="TRUE" ändert auf TINDETECT="FALSE"
Danach startet er auch mit aktiver serieller Verbindung komplett durch und das Gerät ist ganz normal bedienbar.
Aktivierung WPA2 Unterstützung
Standardmäßig kann das Telefon nur WPA. Es gibt einen Trick mit dem auch WPA2 aktiviert werden kann. Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).
Mittels
vi /etc/marvell/wpa_supplicant.conf
den Texteditor starten. Mit PageDown (Bild runter) bis zum Ende des Files gehen. Die Zeilen
proto=WPA pairwise=TKIP group=TKIP
auskommentieren, indem ein # vorangestellt wird:
- cursor auf Beginn einer Zeile
- i drücken zum Einfügen
- # eintippen
- [Esc]
Sind alle Zeilen auskommentiert, dann mittels
:wq[enter]
abspeichern und Editor verlassen.
Danach neu booten.
Anmerkung: Will man sich mit dieser Änderung in einem reinen WPA2 Netz anmelden (registrieren), kann man als Verschlüsselung nur noch WEP auswählen - der Verbindungsversuch scheitert natürlich! (Hardware: Fritz!Box 7270, PHILIPS VP5500)
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.
Wichtige Info von airmack via IRC:
Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf hinten anzuhängen, niemals aber vorne einzufügen!
Menüs
Das File
/usr/local/etc/defaultbuttons.conf
enthält unter anderm die definition des Hauptmenus.
Hierfür ist der Abschnitt Menu besonders interessant.
[Menu] 1 = Applications/camera.desktop 2 = Applications/callhistory.desktop 3 = Applications 4 = Settings 5 = Applications/addressbook.desktop 6 = Settings/RingProfiles.desktop Columns = 3 Default = 5 Map = 123456789*0# Rows = 2
'Rows' und 'Columns' geben an, wieviel Reihen und Spalten das Hauptmenu hat. Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen. Die Menupunkte sind definiert in den Verzeichnissen unter
/usr/local/apps
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist. direkte Menupunkte haben Dateinamen mit der Endung .desktop 'Default' bestimmten vorselektierten Eintrag.
Hier ein weiteres Beispiel für ein angepasstes Menu:
[Menu] 1 = Applications/addressbook.desktop 2 = Applications/callhistory.desktop 3 = Applications/sysinfo.desktop 4 = Applications 5 = Settings 6 = Games 7 = Applications/camera.desktop 8 = Applications/photoedit.desktop 9 = Applications/manualsub.desktop Columns = 3 Default = 5 Map = 123456789*0# Rows = 3
Der Ordner Games ist (momentan ;) leer.
Genereller Aufbau Menü-Einträge
Die Einträge für die Menüs sind im Filesystem abgelegt:
- Settings: /usr/local/apps/Settings
- Applications: /usr/local/apps/Applications
- Klingeltöne: /usr/local/etc/SystemRingTones/
Die Dateien haben die Endung ".desktop" und sind normale Textdateien, die die relevanten Infos enthalten.
Ein Beispiel aus dem Settingsordner:
[Translation] File=QtopiaSettings Context=Sound [Desktop Entry] Type=Application Exec=sound Icon=Sound Name[]=Sound CanFastload=0
Der Abschnitt 'Translation' gibt an in welchem File, die Lokalisationsdaten stehen.
Der Abschnitt 'Desktop Entry':
- Type: Typ des Eintrages
- Application für Anwendungen
- audio/x-wav für Klingeltöne
- Exec: Anwendung, die ausgeführt werden soll
- Icon: Icon, das im Menü benutzt wird.
- Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png
- manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png
- Name[]: Name im Menü, wird über das in Translation angegebe File und Context aufgelöst. Dies wird verhindert, wenn die Klammern wegelassen werden, was das Einfügen eigener Einträge ermöglicht
Hier ein Textfile mit allen desktop-Files als Referenz: Datei:AlleDesktopFiles.txt
Versteckte Menüeinträge
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung '.desktopMASK'. Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschalten.
folgendes an der Kommandozeile eingeben:
cd /usr/local/apps/Settings mv datetime.desktopMASK datetime.desktop mv callforward.desktopMASK callforward.desktop mv calloptions.desktopMASK calloptions.desktop mv resetparam.desktopMASK resetparam.desktop mv subkpncode.desktopMASK subkpncode.desktop
Dies aktiviert folgende Optionen:
- Datums/Zeit-Einstellung
- Anrufweiterleitung
- Anrufoptionen
- Parameter zurücksetzen
- Number Switch
Die nützlichsten sind wohl die ersten Einträge.
Bei dem "Number Switch" ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine Datei:Demomode.desktop anlegen.
Hierfür ist folgende Prozedur nötig:
- im Terminal
cd /usr/local/apps/Applications
vi demomode.desktop
- i drücken
- folgendes Textfragment einfügen
[Translation]
File=QtopiaApplications
Context=DemoMode
[Desktop Entry]
Exec=demomode
Icon=Camera
Type=Application
Name[]=DemoMode
- [Esc]
- :wq [Enter]
Dies schaltet einen Demo-Modus frei.
Französisch
Es gab die Geräte wohl auch in Frankreich von der France Telekom. Zumindest sind entsprechende monitor und upgrade Referenz-Dateien vorhanden in denen das steht. Daher wohl auch die Französischen Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem Unterverzeichnis, so das sie nicht auswählbar sind.
Um diese Dateien zu aktivieren:
cd /usr/local/i18n mv NOTUSED/fr .
Nun ist auch noch französisch als Sprache verfügbar.
Grafische Anpassungen
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).
Einige besonders interessante werden hier aufgeführt:
Eigene Startup/Shutdown-Animation
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in
/usr/local/pics/qpe
Die Links "splash.gif" und "goodbye.gif" zeigen auf die tasächlich zu verwendenen Dateien ("splash-chuck.gif", "goodby-chuck.gif"). Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte mit:
rm /usr/local/pics/qpe/splash.gif
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die eigene Datei:
ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif
Danach wird dann bei jedem Neustart die eigene Animation angezeigt. Analog hierzu mit der goodbye.gif.
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet
anmelden und:
<c>
cd /usr/local/pics/qpe/
wget
rm /usr/local/pics/qpe/splash.gif
ln -s Matrix5.gif splash.gif
</c>
Die GIF Animation kann bis zu 176x220 Pixel groß sein. Kleinere (möglicherweise auch größere) Bilder werden zentriert.
Eigener Boot/Update-Screen
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.
/user_data/data/welcome.rgb565 /usr/local/startup_V4.20/update.bin
Weitere Beispielbilder:
/user_data/prod/data/lcd_test_card1.bin /user_data/prod/data/lcd_test_card2.bin
Diese werden direkt in den Framebuffer geschrieben. Daher müssen sich diese genau ein bestimmtes Format halten:
- Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)
- 16bit pro Pixel RGB565
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:
- Ein Bild in Gimp mit 176x220 erstellen
- das Bild vertikal spiegeln
- Bild->Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)
- Datei->Kopie speichern...
- Als Windowsbitmap -> erweiterete Optionen -> 16bit R5G6B5
- BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)
tail -c 105600 input.bmp > output.raw
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.
cat /user_data/prod/data/lcd_test_card1.bin > /dev/fb0
Wichtige Verzeichnisse
Adressdaten
- cat /user_data/home/Applications/addressbook/addressbook.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Addressbook ><AddressBook>
<Groups>
</Groups>
<Contacts>
<Contact
Uid="-1269720893"
Categories="-1269431263;-1266109093;-1266109094"
FirstName="ich"
FileAs="ich"
JobTitle="cc"
Department="dep"
Company="aa"
BusinessPhone="55"
BusinessFax="77"
BusinessMobile="66"
HomePhone="55"
HomeMobile="11"
HomePc="12"
HomeData="13"
HomeFax="14"
BusinessStreet="street"
BusinessCity="city"
BusinessState="state"
BusinessZip="zip"
BusinessCountry="country"
BusinessPager="88"
Office="office"
Profession="prof"
Assistant="ass"
Manager="man"
HomeStreet="ptjml"
HomeCity="cit"
HomeState="stat"
HomeZip="zi"
HomeCountry="coun"
Spouse="spouse"
Gender="1"
Birthday="20100322"
Anniversary="20100429"
Children="child"
Notes="gakm"
CompanyPronunciation="bb"
BUSINESS_CONTACT=""
photofile="ci-1269721575-0.jpg"
qdl-private-data=""
tone="/usr/local/etc/SystemRingTones/16-Tetris.desktop"
/>
<Contact Uid="-1269554029"
FirstName="VoIP"
LastName="Phone1"
FileAs="VoIP Phone1"
HomeMobile="**621"
tone="/usr/local/etc/SystemRingTones/15-Techno2.desktop" />
<Contact Uid="-1269554032"
Categories="-1269431263"
FirstName="VoIP"
LastName="Phone3"
FileAs="VoIP Phone3"
HomeMobile="**623"
BUSINESS_CONTACT=""
qdl-private-data=""
tone="/usr/local/etc/SystemRingTones/08-Celtrelax.desktop" />
</Contacts>
</AddressBook>
UID ist wohl egal, solange sie nicht zweimal vorkommen.
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben "maxEntries = 500" in der "Contacts.conf"
Die Kategorien stehen in /user_settings/Categories.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE CategoryList> <Categories> <Category id="-1269431263" name="_Personal" /> <Category id="-1269431262" name="_Business" /> </Categories>
Wenn man einem Kontakt eine bestimmte Kategorie zuordnet, dann wird die ID dieser Kategorie im Attribut "Categories" des Kontakts eingetragen (s.o.). Wenn die Kategorie BUSINESS gewählt wird, steht im Attribut "BUSINESS_CONTACT" eine "1".
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!
Die Software des Telefons wertet die XML Datei bei jedem Zugriff neu aus. Es ist also möglich, die Datei im laufendem Betrieb zu ändern (z.B. per Script).
Fotos & Videoschnappschüsse
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:
/user_data/home/Documents
Die Bilder sind dabei nach folgendem Namensschema benannt:
MM-DD-YYYY-hh:mm:ss.jpg
Klingeltöne
Die Klingeltöne liegen, wie oben beschrieben unter:
/usr/local/etc/SystemRingTones/
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich, z.B. mit MhWaveEdit (Linux/GTK) recht komfortabel erzeugen lassen.
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird. Eine für den fiktiven 16. Klingelton erzeugte Datei "16-Tetris.desktop" könnte den folgenden Inhalt haben:
[Desktop Entry]
Categories =
File =16-Tetris.wav
Name[] =16-Tetris
Type = audio/x-wav
[Translation]
File=QtopiaRingTones
Context=16-Tetris
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.
Timeserver
http://www.mikrocontroller.net/topic/170483#1645101 Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg die Adressen der Zeitserver "ntp.xs4all.nl" und "130.142.110.71". Diese könnte man z.B. auf "ptbtime1.ptb.de" und "ptbtime2.ptb.de" ändern.
(http://www.mikrocontroller.net/topic/170483#1649594) das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 - chronos.zedat.fu-berlin.de kann man als server nehmen.
Zusätzliche Software
Dropbear (SSH-Server) installieren
- Mit telnet auf dem Gerät einloggen
- folgendes in die Kommandozeile kopieren
cd /
wget http://vp6500.bd8.nl/bin/dropbear.tgz
tar -xzf dropbear.tgz
rm dropbear.tgz
cd /etc/rc.d/init.d
mv dropbear S90dropbear
./S90dropbear start
Kommando 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch gestartet wird.
Nano 2.2.3 installieren
- Mit telnet auf dem Gerät einloggen
- folgendes in die Kommandozeile kopieren
cd /usr/bin
wget http://www.mikrocontroller.net/attachment/74023/nano
- Mit folgendem Befehl den Editor ausführbar machen:
chmod +x /usr/bin/nano
- Nun ist vi Geschichte ;-)
SIP Einstellungen
Einstellung für 1und1
- SIP1:
- Display Name: ...
- Username: 49#VORWAHLOHNE0#NUMMER#
- Telephone Number: 0#VORWAHLOHNE0#NUMMER#
- Auth:
- Auth Username: 49#VORWAHLOHNE0#NUMMER#
- Password: *********
- Server:
- sip.1und1.de:5060
- Proxy:
- sip.1und1.de:5060
- RTP:
- 30000 und 30019
- STUN:
- stun.1und1.de
- STUN Server Port:
- 3478
- SIP2:
- UDP: 5060
- TCP: 5060
Einstellung für Sipgate
- SIP1
- Display Name: Sipgate Username
- User Name: your SIPgate-ID
- Telephone Number: Sipgate-Telefonnummer
- Auth
- Authentification UserName: your SIPgate-ID
- Password: Sipgate Passwort
- Server
- SIP register address:port: sipgate.de:5060
- Proxy
- SIP proxy1 address:port: sipgate.de:5060
- SIP2
- SIP Port Listen
- for UDP: 5062
- for TCP: 5062
- for TCP TLS: 5053
- STUN: [X] use rport
SIP Outbound muss leer sein.
Ein Videotelefonat von Sipgate zu Sipgate zwischen zwei VP6500 wurde erfolgreich getestet. Gegebenenfalls muss die eigene Videoübertragung noch durch Drücken der Taste Video gestartet werden.
Einstellung für Ekiga.net
- SIP1
- Display Name: Irgendwas
- User Name: username
- Telephone Number: leer
- Auth
- Authentication User Name: username
- Password: password
- Server
- SIP register: ekiga.net:5060
- Protocol: ( ) TCP (*) UDP
- Expire Timer: 3600
- Keep Alive: 0
- Proxy
- alle leer
- STUN
- ( ) use rport
- STUN Server IP address: stun.ekiga.net
- STUN Server port: 3478
- SIP2
- (*) Symmetric Mode
- UDP: 5060
- TCP: 5060
- TCP TLS: 5061
- OBproxy
- alle leer
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.
Weitere features: https://www.ekiga.net/index.php?page=services
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.
Bei Ekiga.net angemeldete Geräte können aber problemlos untereinander telefonieren, sogar mit Video. Da man vom Mainscreen des VP5500/6500 aus direkt nur numerische Kontakte (herkömmliche Telefonnumern) wählen kann, Ekiga.net Telefonnummern aber aus [Benutzername]@ekiga.net bestehen, legt man über das Menü des VP5500/6500 einfach einen neuen Kontakt (Telefonbuch) an. Als Video-Rufnummer trägt man einfach [Benutzername]@ekiga.net ein, wobei [Benutzername] der Name des Ekiga-Accounts ist, den man erreichen will. Zwischen der Eingabe von Buchstaben, Zahlen und Sonderzeichen kann man dabei mit der [#]-Taste des VP5500/6500 umschalten.
Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der Video-Taste auf der Tastatur des VP6500
Einstellung für Fritzbox 7170
Die Anmeldung eines Telefons auf der Fritzbox starten (System/Ansicht/"Expertenansicht aktivieren", dann Telefonie/Telefoniegeräte/"Neues Gerät einrichten", "Telefon", "Bitte auswählen"/"LAN/WLAN (IP-Telefon)") und sich eine Nummer geben lassen,
dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.
Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.
Im Beispiel will die FB die Nummer 621 vergeben:
Reiter SIP1
Display Name: <leer lassen>
User Name: 621
Telephone Number: 621
Reiter Auth
Authentication UserName: 621
Password: [hier das gleiche, wie auf der FB eingeben]
Reiter Server
SIP register address:port
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060
Protocol: UDP
ExpireTime: 3600
Keep Alive: 300
Anmerkungen dazu:
Protokoll: UDP
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.
Keep Alive: 300
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen
wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so
aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.
Anmeldung:
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.
Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.
Buildumgebung erstellen
Bislang ist die Erstellung von GUI-Applikationen (QTopia) noch nicht auf einfache Weise möglich. Das größte Problem ist, dass der Quellcode der Video-Telefon-Anwendung zum größten Teil zur Verfügung steht. Das Erstellen von Kommandozeilen-Anwendungen geht aber schon problemlos.
Windows
Die verwendete ARM-Entwicklungsumgebung basiert auf gcc. Mittels cygwin kann diese zwar auch als Win32-Anwendungen gebaut werden, dies ist aber in hohem Maß unüblich.
Am besten eine aktuelle Version von Debian oder Ubuntu in "vmware player" oder "virtual box" installieren. Wenn man die virtuelle Maschine nur zum Compilieren verwendet, reicht eine kompakte Kommandozeilen-Version (z.B. Ubuntu Server 9.10). Fertige virtuelle Machinen, im vmware-Marketing-Sprech gerne auch "virtual appliances" genannt, sind reichlich verfügbar (z.B. http://www.vmware.com/appliances/directory/70918).
Freetz-Linux
Für Fritzbox-Besitzer besonders geeignet ist das Freetz-linux, welches man im IP-Phone-Forum finden kann (-> http://www.ip-phone-forum.de/showpost.php?p=1400234&postcount=1). Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus. Mittels Samba kann einfach per Windowsnetzwerk auf das Home-Verzeichnis zugriffen werden und per SSH kann einfach eine Shell (UTF als Codierung einstellen, dann stimmen auch die Sonderrzeichen) geöffnet werden. Es muss sichergestellt werden sein, dass die VM zugriff auf das lokale Netzwerk, sowie das Internet hat (am besten mit einem 'ping google.com' überprüfen). Bei mir ging es eigenartiger weise erst, als ich die virtuelle Netzwerkkarte in den VM-Settings auf NAT gestellt habe.
Benutzername und alle Kennwörter sind 'freetz'
Installation und Test der VP5500 Toolchain
Installation der Buildumgebung:
sudo mkdir /opt/VP5500 sudo mkdir /opt/VP5500/toolchain cd /opt/VP5500/toolchain sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2 sudo bunzip2 arm-linux-gcc-3.3.2.tar.bz2 sudo tar -xf arm-linux-gcc-3.3.2.tar sudo rm arm-linux-gcc-3.3.2.tar sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm
Nach einem sudo-Kommando muss eventuell das Passwort eingegeben werden, weswegen die Befehle einzeln eingegeben werden sollten (oder man öffnet am Anfang eine sudo shell, dann kann man das auch weglassen.
Test der Buildumgebung:
cd ~ wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz tar -xzf helloworld.tgz rm helloworld.tgz
Dannach sollte im ~/helloworld verzeichnis ein neues executable liegen, was vom Hostrechner einfach via Netzwerkfreigabe (\\freetz-linux\helloworld) und via WinSCP auf das Telefon kopiert werden kann.
Freetz-Linux eigentlicher Anwendungszweck
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen. Folgende Schritte machen dies:
cd ~ svn checkout http://svn.freetz.org/trunk freetz-trunk
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis 'freetz-trunk'. Konfigurieren mit 'make menuconfig' und Image erstellen mit 'make'. Wenn alles gut geht kann man das image dann vom Hostrechner aus der Windowsfreigabe '\\freetz-linux\freetz-trunk\images' rausholen und auf die Box spielen.
Für detailiertere Infos bitte direkt bei Freetz nachschlagen: http://trac.freetz.org/
Linux
Die bisher bekannten, mit VP5500 und VP6500 ausgelieferten Software-Versionen, basieren auf einer etwas älteren "gcc 3.3.2-ARM-Toolchain". Eine passende Toolchain für ein x86-basiertes Entwicklungssystem ist unter http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2 zu finden.
Unter Debian-basierten Linux-Distros kann dieses Archiv z.B. nach /opt/VP5500/toolchain entpackt werden (einige der Makefiles im Forum setzen diesen Speicherort vorraus). Es ist jedoch zu beachten, dass diese Version der Toolchain auch über den Pfad /usr/local zugänglich sein sollte. Dazu kann mittels "ln -s /opt/VP5500/toolchain/usr/local/arm arm" in /usr/local ein Symlink auf den eigentlichen Speicherort gesetzt werden.
Hello World
Christian Klippel (ChrisK) hat unter http://www.mikrocontroller.net/attachment/73161/helloworld.tgz ein "Hello World" bereitgestellt, mit dem sich die Toolchain testen lässt und dessen "Makefile" und "Makefile.local" als Grundlage für eigene Versuche dienen kann.
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von "make" compiliert.
Zum Testen muss das Binary natürlich auf das Zielsystem übertragen werden. Wenn auf dem Entwicklungssystem ein http-Server oder ein ssh-Server läuft, kann man das Binary einfach in ein darüber zugängliches Verzeichnis kopieren es anschließend in einer telnet-Sitzung vom Verzeichnis /tmp aus mittels wget oder scp laden. Zum Test muss die Datei mittels "chmod +x helloworld" ausführbar gemacht werden, bevor sie mit "./helloworld" ausgeführt werden kann.
Mittels eines ftpd (z.B. http://www.mikrocontroller.net/attachment/73780/troll-ftpd_1.28-cg2_arm.tgz) oder sshd (z.B. Dropbear von http://vp6500.bd8.nl/) auf dem Zielsystem, kann man das Kopieren auch vom Entwicklungssystem aus durchführen.
Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung
Die Makefiles von kleineren Projekten sind häufig nicht so sauber aufgebaut wie das helloworld-Beispiel, so dass man sie leichter ersetzt, als ändert. Am Beispiel von micro_httpd (http://www.acme.com/software/micro_httpd/ , http://www.mikrocontroller.net/attachment/73175/micro_httpd.tar.gz) kann leicht nachvollzogen werden, wie man den modularen Ansatz vom "Hello World"-Beispiel übernehmen kann (Makefile -> Makefile + Makefile.local).
Hardware + Software Versionen
Listet mal eure Hardware- und Softwareversion aus dem Applications => System Info Menü auf, wenn sie hier noch nicht stehen!
VP5500
| Hardware Version | Date | Software Version |
|---|---|---|
| ind5 | 0647 | 4.20 |
| ind5 | 0648 | 4.20 |
| ind5 | 0649 | 4.20 |
| ind5 | 0702 | 4.20 |
VP6500
| Hardware Version | Date | Software Version |
|---|---|---|
| ind3-v2 | 0713 | 3.22 |
| ind3-v2 | 0716 | 3.22 |
Stromaufnahme
VP5500
FIXME
VP6500
Konfiguration: VP6500 mit aktivierter serieller Konsole an Labornetzteil, Spannung 3.67V (Bei weniger bootet es anscheinend aufgrund von Stromspitzen nicht richtig und vermeldet auf der seriellen Konsole ein 'battery low' und schaltet sich danach selbst ab. Diese Spannung sollte noch so gerade 'safe' sein, geht man davon aus, daß da ein Step-Up im Innern am werkeln ist und noch einen Schottky-Vorwärts-Drop einzurechjnen ist).
Messungen
- mit abgeschaltetem Display, aber eingebucht: ca. 80mA
- Display an: ca. 200mA
- mit 100% Prozessor-Last (von serieller Konsole ausgeführt: "while true; do true; done"): ca. 60mA mehr als idle

