https://www.mikrocontroller.net/api.php?action=feedcontributions&user=Dl3daz&feedformat=atomMikrocontroller.net - Benutzerbeiträge [de]2024-03-29T05:23:35ZBenutzerbeiträgeMediaWiki 1.38.5https://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&diff=45708PHILIPS VP5500 VoIP Telefon2010-04-05T08:06:00Z<p>Dl3daz: /* Das VPx500 'rooten' */</p>
<hr />
<div>= Verwandte Artikel =<br />
* Konfiguration: http://www.mikrocontroller.net/topic/170483#new<br />
* Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new<br />
* http://das-labor.org/wiki/VP5500<br />
* (Hack) http://spritesmods.com/?art=vpx500<br />
* http://vp6500.bd8.nl/<br />
<br />
= Features =<br />
* Kamera-Auflösung 640x480 Pixel<br />
* 30 Bilder pro Sekunde<br />
* Kamera um 240° drehbar<br />
* 5,6 cm (2,2") TFT-Display, 176x220 Pixel, 65000 Farben<br />
* Audio-/Video-Ausgang (4fach Klinke-Cinch, beim VP5500 2,5mm Klinke und beim VP6500 3,5mm Klinke)<br />
* integrierter Li-Ion Akku, 3,7 V-/1100 mAh<br />
* englische und niederländische Menüsprache<br />
* Software Qtopia Version 2.1.0<br />
* Maße (LxBxH): 134x49x24 mm.<br />
<br />
[[Datei:Philips_VP5500.jpg]]<br />
<br />
= Hardware =<br />
* MCU: Freescale MC9328MX21 (ARM9) @ 266MHz<br />
* PC-to-TV-Konverter-Chip: FS455LF<br />
* WLAN: Marvell 88w8385, als Modul von WM-G-MR-01 (VP5500) / Philips BGW211, on-board (VP6500)<br />
* SDRAM: 2 x K4S56163LF - 4M x 16Bit x 4 Banks<br />
* 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<br />
* Kamera: dc-4626.a5 by chicony<br />
* Display: Samsung LTS220QC (HD66772 Controller)<br />
<br />
== System-Takte ==<br />
# cat /proc/systclk<br />
System clocks state:<br />
Ref clock : 32768Hz (int, premult by 512)<br />
MPLL clock: 263999905Hz (computed: 264000000Hz)<br />
SPLL clock: 163840000Hz (computed: 163840000Hz)<br />
CPU clock : 263999905Hz (PERSC = 0)<br />
Bus clock : 132000000Hz (BCLKDIV = 1, computed: 131999952Hz)<br />
CSI clock : unknown (cannot read register CSICR1)<br />
USB clock : 20480000Hz (USB_DIV = 7)<br />
Wait State: CS0U[WSC] = 10, CS0U[WSC] = 48<br />
loops_per_jiffy = 665058<br />
<br />
= Innenleben =<br />
<gallery widths="240" ><br />
<br />
Datei:Oberseite.jpg | Ansicht der Oberseite<br />
Datei:Oberseite_beschriftet.jpg | Oberseite mit Beschriftung der Bauteile<br />
Datei:Drumherum.jpg | Übersicht über die Komponenten<br />
</gallery><br />
<br />
<gallery widths="240" ><br />
Datei:Kontakte_Oberseite.jpg | UART-Schnittstelle Oberseite<br />
Datei:Kontakte_Unterseite.jpg | JTAG-Schnittstelle Unterseite<br />
</gallery><br />
<br />
<br />
== Testpins ==<br />
Original Liste von [http://www.mikrocontroller.net/topic/170483#1646514 Tino] [[Media:Philips vp5500 Liste Testpins.pdf|herrunterladen]].<br />
<br />
[[Bild:Philips vp5500 testpins 1.jpg|thumb| Testpins auf der Rückseite]]<br />
[[Bild:Philips vp5500 testpins 2.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]<br />
<br />
{| class="wikitable"<br />
! Testpin Nr. !! verbunden zu !! Funktion<br />
|-<br />
| 1 || LED || unbekannt<br />
|-<br />
| 2 || Kamera Pin 8 an CN1 || unbekannt<br />
|-<br />
| 3 || Pin 4 an IC1 || unbekannt<br />
|-<br />
| 4 || z.B. IC5 Pin V 18 || VDDA<br />
|-<br />
| 5 || GND || GND<br />
|-<br />
| 6 || NC || NC<br />
|-<br />
| 7 || Pin E 16 an IC5 || SAP_CLK<br />
|-<br />
| 8 || Pin 1 an CN 3 || Lautsprecher<br />
|-<br />
| 9 || Pin 2 an CN 3 || Lautsprecher<br />
|-<br />
| 10 || Pin an CN 4 || ?<br />
|-<br />
| 11 || Pin an CN 4 || ?<br />
|-<br />
| 12 || Pin an CN 4 || ?<br />
|-<br />
| 13 || Pin L 16 an IC5 || UART2_TXD<br />
|-<br />
| 14 || Pin C 12 an IC5 || USBH1_RXDM<br />
|-<br />
| 15 || Pin H 12 an IC5 || USBH1_TXDP<br />
|-<br />
| 16 || Pin B 19 an IC5 || CSPI2_SS2<br />
|-<br />
| 17 || Pin B16 an IC5 || SSI2_FS<br />
|-<br />
| 18 || Pin F 18 an IC5 || KP_ROW0<br />
|-<br />
| 19 || Pin K 18 an IC5 || KP_COL4<br />
|-<br />
| 20 || Pin L 19 an IC5 || UART3_TXD<br />
|-<br />
| 21 || Pin T 14 an IC5 || RESET_IN<br />
|-<br />
| 22 || geht an + des Kondensators neben IC6 || unbekannt<br />
|-<br />
| 23 || Pin D 13 an IC 9 || CLKOUT<br />
|-<br />
| 24 || Pin E 13 an IC 9 || CLKIN_P<br />
|-<br />
| 25 || Pin A 9 an IC 9 || DAC_D<br />
|-<br />
| 26 || Pin A 8 an IC 9 || DAC_A<br />
|-<br />
| 27 || Pin A 7 an IC 9 || DAC_B<br />
|-<br />
| 28 || Pin A 6 an IC 9 || DAC_C<br />
|-<br />
| 29 || Pin L 13 an IC 5 || UART1_TXD<br />
|-<br />
| 30 || Pin T 16 an IC 5 || BOOT1<br />
|-<br />
| 31 || Pin K 10 an IC 5 || UART1_RXD<br />
|-<br />
| 32 || Pin U 17 an IC 5 || BOOT2<br />
|-<br />
| 33 || Pin 9 an IC 23 || unbekannt<br />
|-<br />
| 34 || Pin D 19 an IC5 || CSPI2_SCLK<br />
|-<br />
| 35 || Pin C 14 an IC5 || TIN<br />
|-<br />
| 36 || Pin C 19 an IC5 || CSPI2_SS1<br />
|-<br />
| 37 || Pin D 18 an IC5 || CSPI2_SS0<br />
|-<br />
| 38 || Pin E 19 an IC5 || CSPI2_MOSI<br />
|-<br />
| 39 || Pin H 19 an IC5 || PWMO<br />
|-<br />
| 40 || Pin J 9 an IC 7 und IC 8 || VDD<br />
|-<br />
| 41 || Pin J 19 an IC 5 || KP_COL2<br />
|-<br />
| 42 || Pin K 16 an IC 5 || KP_COL3<br />
|-<br />
| 43 || Pin J 11 an IC 5 || KP_ROW2<br />
|-<br />
|44 || Pin J 17 an IC 5 || KP_COL1<br />
|-<br />
|45 || Pin G 19 an IC 5 || KP_ROW4<br />
|-<br />
|46 || Pin G 17 an IC 5 || KP_ROW3<br />
|-<br />
|47 || Pin D 5 an IC 10 und IC 11 || ACC<br />
|-<br />
|48 || Pin G 16 an IC 5 || KP_ROW1<br />
|-<br />
|49 || Pin J 18 an IC 5 || KP_COL0<br />
|-<br />
|50 || Pin V 18 an IC 5 || VDDA<br />
|-<br />
|51 || Pin 2 an CN KB-Stecker || ?<br />
|-<br />
|52 || Pin 2 an IC 15 || ?<br />
|-<br />
|53 || Pin 4 am LCD Stecker || ?<br />
|-<br />
|54 || Pin E 17 an IC 5 || CSPI2_MISO<br />
|-<br />
|55 || Pin 1,2,3,10,13 am LCD Stecker || ?<br />
|-<br />
|56 || Pin 3 an IC 16 || ?<br />
|-<br />
|57 || Pin U 10 an IC 5 || PC_PWRON<br />
|-<br />
|58 || Pin 1 IC 18 || ?<br />
|-<br />
|59 || an Diode über IC 16 || ?<br />
|-<br />
|60 || Pin 3 an IC 25 || ?<br />
|-<br />
|61 || Ladekontakt positiv || Ladegerät +<br />
|-<br />
|62 || GND || GND<br />
|-<br />
|63 || Akku Mittelkontakt || Akkustand? Temperatur?<br />
|-<br />
|64 || Transistor unter IC 16 || ?<br />
|-<br />
|65 || Pin 2 an IC 22 || ?<br />
|-<br />
|66 || Pin 1,12,30 an IC 24 || VSS<br />
|-<br />
|67 || Kondensator + unter IC 20 || ?<br />
|-<br />
|68 || Pin 5 an IC 21 || ?<br />
|-<br />
|69 || Pin 2 an IC 4 || ?<br />
|-<br />
|70 || Pin 25 an IC24 || MCLK<br />
|-<br />
|71 || Prozessor Pin W 14 || QVDD<br />
|}<br />
<br />
== UART ==<br />
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren.<br />
Jedoch startet dann das Telefon nicht vollständig (Fix siehe [[#Betrieb mit aktiverter serieller Schnittstelle]])<br />
<br />
* Spannungs-Pegel: 3.3V<br />
* Baudrate: 115200kbps<br />
* Stopbits: 1<br />
* Flussteuerung: keine<br />
=== VP5500 ===<br />
[[Bild:VP5500_seriell_highlight.svg|100px|UART-Pins VP5500(Frontseite der Platine)]]<br />
<br />
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br />
<br />
=== VP6500 ===<br />
[[Bild:VP5600-Serialport-Preliminary.jpg|100px|UART-Pins VP6500]]<br />
<br />
Die serielle Schnittstelle ist unter vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br><br />
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.<br />
<br />
== JTAG ==<br />
[[Bild:jtag.jpg Belegung der JTAG-Pins (Rückseite der Platine)]]<br />
<br />
= Hardware Modifikationen =<br />
== Zerlegen des Telefons ==<br />
<gallery><br />
Datei:01_offen_von_Hinten.JPG|1. Geöffnetes Akkufach<br />
Datei:02_Blende_entfernt.JPG|2. hintere Schwarze Blende entfernt<br />
Datei:03_Rückseite_entfernt.JPG|3. Schalenrückteil entfernt<br />
Datei:04_aufhebeln_Vorderteil.JPG|4. Druck nach außen<br />
Datei:05_vorderteil_entfernt.JPG|5. entferntes Vorderteil<br />
Datei:06_Elektronik_entfernt.JPG|6. entfernte Elektronik<br />
</gallery><br />
<br />
# das Akkufach muss geöffnet und die Schrauben entfernt werden<br />
# hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen<br />
#* 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.<br />
# Nun kann einfach das rückseitige Schalenteil abgeschaubt werden<br />
# das Entfernen des Frontschalenteils ist etwas tricky:<br />
#* von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten<br />
#* etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.<br />
#* Mit 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 außen wirkt.<br />
#* Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritisch, wenn der Bügel ein wenig anbricht)<br />
# Die Platine zu entfernen ist nicht ganz so schwierig.<br />
#* Zuerst die Seite auf der keine Knöpfe sind:<br />
#* vorichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten <br />
#* dann versuchen die Paltine seitlich nach oben aus dem Gehäuse zu ziehen<br />
#* dabei auf das Lautsprecherkabel und den Kamerakonnektor achten<br />
# Zusammenbau genauso, nur umgedreht ;)<br />
#* nicht die Lautsprecher- und Kamera-Stecker vergessen<br />
<br />
== Buchse für Uart einbauen ==<br />
<gallery><br />
Datei:10_Pins.JPG|1. unbearbeitete Pinreihe<br />
Datei:11_Pins_bearbeitet.JPG|2. präperierte Pinreihe<br />
Datei:09_Pads.JPG|3. präperierte Pads<br />
Datei:12_Pins_ausrichten.JPG|4. Pinreiheausrichten<br />
Datei:13_Pins_angelötet_1.JPG|5. angelötete Pinreihe<br />
Datei:14_Pins_angelötet_2.JPG|6. angelötete Pinreihen<br />
Datei:08_Mittelteil.JPG|7. Mittelteil mit ausgefeiltem Loch<br />
Datei:15_Mittelteil_zusammengebaut.JPG|8. wieder zusammengesteckt<br />
Datei:16_in_Aktion.JPG|9.verbundene serielle Schnittstelle<br />
</gallery><br />
<br />
Zunächst muss das Telefon zerlegt werden ([[#Zerlegen des Telefons]])<br />
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. <br />
<br />
# Hierfür habe ich einreihige gedrehte IC-Sockel genutzt <br />
# deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)<br />
# ebendso auf die Pads ein wenig eingezinnt<br />
# ausrichten und festlöten<br />
# eine Reihe<br />
# die zweite Reihe<br />
# 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.<br />
# fertig<br />
# und im Einsatz<br />
<br />
= Das VPx500 'rooten' =<br />
<br />
Um Zugang zu den Dateien auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten<br />
<br />
# serielle Schnittstelle<br />
<br />
Dazu muß der [[#UART]] angeschlossen werden. Während des Bootvorgangs drückt man immer wieder ziellos irgendwelche Tasten bis man am Prompt des Bootloaders ist.<br />
<br />
Dann kann man <br />
<br />
boot root=/dev/mtdblock2 init=/bin/sh<br />
<br />
eingeben, um an eine Shell zu kommen.<br />
<br />
# telnet<br />
<br />
telnet ist der komfortablere Weg. Um telnet zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf den Updateserver von KPN zuzugreifen (den es nicht mehr gibt). Glücklicherweise geschieht dies nicht über eine feste IP, sondern über einen Hostnamen, so dass man an dieser Stelle sich durch einen eigenen DNS den Domainname auf einen eigenen Server umleiten kann. Daher ist im eignenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte 'Static DNS', ..).<br />
Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.<br />
<br />
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:<br />
<br />
telnet 123.456.789.012<br />
# <br />
<br />
Passwort ist "toor".<br />
Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.<br />
<br />
Unter Applications>Registration sind Netzwerk- und VoIP-Einstellungen zu finden.<br />
<br />
== Anleitung für Fritz-Box-Benutzer ==<br />
Die Fritzboxen bieten bisher leider keine Möglichkeit, den verwendeten DNS<br />
direkt im Webinterface zu ändern, über Umwege geht es aber doch:<br />
* Über das Webinterface der Fritzbox die Einstellungen sichern<br />
* Exportdatei im Texteditor öffnen (am besten nicht Notepad, da der die Unix-Zeilenumbrüche nicht versteht - zur Not geht auch Wordpad)<br />
* nach overwrite_dns1 suchen (gibt es zwei mal) und da den DNS 84.38.68.30 oder 188.40.123.50 eintragen<br />
* am Anfang der Exportdatei VOR "**** CFGFILE:ar7.cfg" eine Zeile 'NoChecks = yes' einfügen, damit die Fritzbox die nun nicht mehr passende Checksumme ignoriert.<br />
* Einstellungen zurück in die Fritzbox übertragen.<br />
<br />
Wenn die Telefone entsperrt sind, den DNS wieder entfernen (Es ist<br />
vielleicht eine ganz gute Idee, wenn man da zwei unabhängige DNS-Server<br />
einträgt, so umgeht man auch gleich providerseitige DNS-Sperren)<br />
<br />
= Voice over IP (VoIP, SIP) =<br />
<br />
*http://de.wikipedia.org/wiki/IP-Telefonie<br />
*http://de.wikipedia.org/wiki/Session_Initiation_Protocol<br />
*http://de.wikipedia.org/wiki/H.323<br />
*http://de.wikipedia.org/wiki/Softphone<br />
<br />
Benutzer ist 103<br />
<br />
Mit Ekiga konnte so per 103@xxx.xxx.xxx.xxx eine Sprachverbindung zum Telefon aufgebaut werden.<br />
<br />
= Software Modifikationen =<br />
== Vorsicht Fallen ==<br />
Es ist nicht schwer, sich den Zugang zum Telefon abzuschneiden, wenn man nicht aufpasst.<br />
=== Startscripten ===<br />
Die Scripten in /etc/rc.d/" müssen im Hintergrund laufen. Tut ein Script das nicht, ist an dieser Stelle Schluß mit dem Bootvorgang.<br />
<br />
Dann darf man als nächstes den Lötkolben anheizen und die serielle Schnittstelle ([[#UART]]) zugänglich machen.<br />
<br />
== Grundlagen ==<br />
Bestimmte Aktionen werden immer wieder benötigt.<br />
Diese sollen hier kurz beschrieben werden.<br />
<br />
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.<br />
<br />
=== Dateien bearbeiten mit vi===<br />
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können.<br />
Für eine genaue Bedienung bitte Google benutzen.<br />
Die wichtigsten Bedienelemente werden hier kurz erläutert.<br />
<br />
Datei Öffnen mit 'vi Dateipfad'<br />
vi kennt zwei Modi: Kommando- und Einfüge-Modus.<br />
i - wechselt in den Einfüge-Modus, in dem geschrieben werden kann<br />
<br />
[Esc] wechselt zurück in den Kommandomodus. <br />
In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.<br />
:x - löscht das Zeichen an Cursor position<br />
:dd - löscht die ganze zeile<br />
:<nowiki>:</nowiki>q! - schließt ohne zu speichern<br />
:<nowiki>:</nowiki>w - speichert<br />
:<nowiki>:</nowiki>wq - speichert und beenden<br />
<br />
=== Dateien auf das Telefon laden ===<br />
Um Daten von einem http-Server zu laden, benutzt man <br />
wget url<br />
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.<br />
<br />
Um Daten von einem ftp-Server zu laden, benutzt man ftp.<br />
Auch hier muss vorher in das zielverzeichnis gewechselt werden.<br />
ftp hostname<br />
dann gegebenenfalls die Zugangsdaten eingeben und mittels 'cd' und 'ls' in das Entsprechende Verzeichnis auf dem FTP-Server wechseln<br />
und anschließend mittels <br />
get dateiname<br />
die Datei herunterladen.<br />
<br />
=== Dateien vom Telefon herunterladen ===<br />
Auch hier bietet sich ein FTP an.<br />
Mittels 'ftp hostname' verbinden, Benutzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels<br />
put localeDatei<br />
eine Lokale Datei hochladen.<br />
<br />
=== Alternative Dropbear ===<br />
<br />
Wurde der dropbear-ssh server installiert [[#Dropbear (SSH-Server) installieren]] können mittels eines Programms mit SCP-Unterstützung (zB. [http://winscp.net/eng/docs/lang:de WinSCP] für Windows) sehr komfortabel Dateien ausgetauscht werden.<br />
<br />
Mit WinSCP können auch Dateien direkt bearbeitet werden.<br />
Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.<br />
<br />
== Backup ==<br />
=== Backup des Flash ===<br />
If you want to make a backup of your root partition, you can do as<br />
follows:<br />
<br />
<c><br />
echo '#!/bin/sh' > /tmp/backup.sh<br />
echo 'cat /dev/mtdb2 2>/dev/null' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
micro_inetd 31337 /tmp/backup.sh<br />
</c><br />
<br />
This'll make your device listen for incoming connections on port 31337.<br />
On your host system you may then simply run <br />
nc ip.of.your.phone 31337 > fon_rootfs<br />
et voilà, you got your rootfs packed into a file.<br />
<br />
Note that the backed up file is not ext2, but a jffs2 formatted<br />
filesystem. These can't be handled by a simple "mount -o loop" as you'd<br />
have thought... so here's how you mount it:<br />
<br />
<c><br />
modprobe jffs2<br />
modprobe mtdram total_size=32768 erase_size=128<br />
modprobe mtdblock<br />
mkdir /tmp/phone-root<br />
mknod /tmp/phone-mtdb2 b 31 0<br />
dd if=/your/backup/file of=/tmp/phone-mtdb2<br />
mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root<br />
</c><br />
<br />
[[#Dateisystem herunterladen]] describes another way to dump the filesystem for closer examination.<br />
<br />
=== Komplettes Backup ===<br />
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.<br />
<br />
cd /etc/rc.d/init.d<br />
wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe<br />
chmod +x /etc/rc.d/init.d/S91backup_pipe<br />
<br />
Damit wird eine Art Backup-Server mit dem Boot gestartet.<br />
wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.<br />
<br />
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:<br />
<br />
nc 192.168.1.3 31337 > fon_rootfs<br />
nc 192.168.1.3 31338 > fon_udata<br />
nc 192.168.1.3 31339 > fon_usettings<br />
nc 192.168.1.3 31340 > fon_bootld<br />
nc 192.168.1.3 31341 > fon_kernel<br />
<br />
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_*<br />
Dateinamen könnt ihr natürlich auch frei vergeben.<br />
<br />
fon_udata ist die /user_data Partition, fon_usertings dementsprechend<br />
die /user_settings Partition.<br />
<br />
Der bootld Bereich enthält auch die Parameter. Um das später (falls<br />
überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in<br />
zwei Teile aufgeteilt werden. Der erste enthält dann den reinen<br />
Bootloader-Bereich, der zweite die Parameter. Wer's wirklich braucht für<br />
den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll<br />
ist das aber nicht, hat man den Bootloader erstmal mit was anderem<br />
überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen<br />
benutzen....<br />
<br />
=== Zurückspielen der Backups ===<br />
<br />
1) Man braucht ein (die) Backup-Image(s).<br />
<br />
2) Serielle Verbindung zum Telefon<br />
<br />
3) Akku abstecken, wieder anstecken.<br />
<br />
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so<br />
das man im Bootloader landet. Dabei muss man recht schnell sein. Es<br />
sollte dann ein Prompt kommen:<br />
<br />
<c><br />
blob><br />
</c><br />
<br />
5) Nun gibt man ein <br />
xdownload param<br />
Wobei 'param' der Teil ist, den man wiederherstellen will:<br />
* blob - Bootloader (fon_bootld)<br />
* param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)<br />
* kernel - Der Kernel (fon_kernel)<br />
* ramdisk - Das Root-Filesystem / (fon_rootfs)<br />
* ramdisk2 - Das /user_data Filesystem (fon_udata)<br />
* ramdisk3 - Das /user_settings Filesystem (fon_usettings)<br />
<br />
Beim Backup ist blob + param in einer Datei, müsste man also ggf.<br />
erstmal aufsplitten.<br />
<br />
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den<br />
Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.<br />
<br />
7) Kaffee trinken, auf's Klo gehen, mit Frau/Freundin/Mutter ein Gespräch<br />
anfangen.<br />
<br />
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet<br />
wieder am "blob>" prompt. Nun gibt man<br />
flash param<br />
ein.<br />
<br />
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.<br />
<br />
10) "boot" eingeben. Da Telefon bootet nun normal.<br />
<br />
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das<br />
Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt<br />
man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle<br />
abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten<br />
(Akku kurz ab- und wieder anstöpseln)<br />
<br />
=== Dateisystem herunterladen ===<br />
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.<br />
<br />
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:<br />
<br />
<c><br />
echo '#! /bin/sh' > /tmp/backup.sh<br />
echo 'cd /' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
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<br />
micro_inetd 31340 /tmp/backup.sh<br />
</c><br />
<br />
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.<br />
<br />
Auf einem anderen Linux system (oder cygwin) kann mittels<br />
<c><br />
nc telefon-Ip 31340 > file.tar<br />
</c><br />
die Datei abgerufen werden.<br />
<br />
Der Vorgang dauert aber ein ganz paar Minuten.<br />
<br />
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.<br />
<br />
== Betrieb mit aktiverter serieller Schnittstelle ==<br />
<br />
Das 5500 scheint nicht komplett zu starten wenn man TIN auf low hat<br />
und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei<br />
<br />
/usr/local/startup/daemon.sh<br />
<br />
ziemlich am Anfang das TINDETECT="TRUE" ändert auf TINDETECT="FALSE"<br />
<br />
Danach startet er auch mit aktiver serieller Verbindung komplett durch<br />
und das Gerät ist ganz normal bedienbar.<br />
<br />
<br />
<br />
== Aktivierung WPA2 Unterstützung ==<br />
<p>Standardmäßig kann das Telefon nur WPA, dabei unterstützt es allerdings auch <b>WPA mit AES</b> Verschlüsselung.</p><br />
<p>Es gibt zwei verschiedene Tricks mit denen auch WPA2 aktiviert werden kann.<br />
Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).</p><br />
<br />
=== Trick1 ===<br />
Mittels<br />
vi /etc/marvell/wpa_supplicant.conf<br />
den Texteditor starten.<br />
Mit PageDown (Bild runter) bis zum Ende des Files gehen.<br />
Die Zeilen <br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
auskommentieren, indem ein # vorangestellt wird:<br />
* cursor auf Beginn einer Zeile <br />
* i drücken zum Einfügen<br />
* # eintippen<br />
* [Esc]<br />
Sind alle Zeilen auskommentiert, dann mittels<br />
:wq[enter]<br />
abspeichern und Editor verlassen.<br />
<br />
Danach neu booten.<br />
<br />
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)<br />
<br />
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.<br />
<br />
Wichtige Info von airmack via IRC:<br />
<br />
'''Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf <u>hinten anzuhängen</u>, niemals aber vorne einzufügen!'''<br />
<br />
=== Trick2 ===<br />
Dieser Trick funktioniert mit Accesspoints, bei denen man auch WPA Verbindungen mit AES verschlüsseln kann. Vorteil dieses Tricks ist, dass man die wpa_supplicant.conf nicht manuell editieren muss. Allerdings unterstützt nicht jeder Accesspoint WPA mit AES (aber dd-wrt kann das).<br />
<br />
Man konfiguriert den Accesspoint zunächst mit WPA PSK und wählt AES als Verschlüsselungsalgorithmus. Jetzt meldet man das Telefon an, das Telefon erkennt richtig, dass eine WPA Verbindung vorliegt und verbindet sich per WPA und AES mit dem Accesspoint. Anschliessend konfiguriert man den Accesspoint von WPA PSK AES nach WPA2 PSK AES. Jetzt schaltet man das VP5500/6500 aus und wieder ein. Nachdem es fertig gebootet hat, verbindet es sich automisch per WPA2 PSK und mit AES Verschlüsselung. Fertig.<br />
<br />
== Menüs ==<br />
=== Hauptmenu ===<br />
<br />
Das File <br />
/usr/local/etc/defaultbuttons.conf<br />
enthält unter anderm die definition des Hauptmenus.<br />
<br />
Hierfür ist der Abschnitt Menu besonders interessant.<br />
[Menu]<br />
1 = Applications/camera.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications<br />
4 = Settings<br />
5 = Applications/addressbook.desktop<br />
6 = Settings/RingProfiles.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 2<br />
<br />
'Rows' und 'Columns' geben an, wieviel Reihen und Spalten das Hauptmenu hat.<br />
Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen.<br />
Die Menupunkte sind definiert in den Verzeichnissen unter <br />
/usr/local/apps<br />
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist.<br />
direkte Menupunkte haben Dateinamen mit der Endung .desktop<br />
'Default' bestimmten vorselektierten Eintrag.<br />
<br />
Hier ein weiteres Beispiel für ein angepasstes Menu:<br />
[Menu]<br />
1 = Applications/addressbook.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications/sysinfo.desktop<br />
4 = Applications<br />
5 = Settings<br />
6 = Games<br />
7 = Applications/camera.desktop<br />
8 = Applications/photoedit.desktop<br />
9 = Applications/manualsub.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 3<br />
<br />
Der Ordner Games ist (momentan ;) leer.<br />
<br />
=== Genereller Aufbau Menü-Einträge===<br />
Die Einträge für die Menüs sind im Filesystem abgelegt:<br />
<br />
* Settings: /usr/local/apps/Settings<br />
* Applications: /usr/local/apps/Applications<br />
* Klingeltöne: /usr/local/etc/SystemRingTones/<br />
<br />
Die Dateien haben die Endung ".desktop" und sind normale Textdateien, die die relevanten Infos enthalten.<br />
<br />
Ein Beispiel aus dem Settingsordner:<br />
[Translation]<br />
File=QtopiaSettings<br />
Context=Sound<br />
[Desktop Entry]<br />
Type=Application<br />
Exec=sound<br />
Icon=Sound<br />
Name[]=Sound<br />
CanFastload=0<br />
<br />
Der Abschnitt 'Translation' gibt an in welchem File, die Lokalisationsdaten stehen.<br />
<br />
Der Abschnitt 'Desktop Entry':<br />
* Type: Typ des Eintrages <br />
** Application für Anwendungen<br />
** audio/x-wav für Klingeltöne<br />
* Exec: Anwendung, die ausgeführt werden soll<br />
* Icon: Icon, das im Menü benutzt wird. <br />
** Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png<br />
** manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png<br />
* 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<br />
<br />
Hier ein Textfile mit allen desktop-Files als Referenz: [[File:alleDesktopFiles.txt]]<br />
<br />
=== Versteckte Menüeinträge ===<br />
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung '.desktopMASK'.<br />
Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschalten.<br />
<br />
folgendes an der Kommandozeile eingeben:<br />
cd /usr/local/apps/Settings<br />
mv datetime.desktopMASK datetime.desktop<br />
mv callforward.desktopMASK callforward.desktop<br />
mv calloptions.desktopMASK calloptions.desktop<br />
mv resetparam.desktopMASK resetparam.desktop<br />
mv subkpncode.desktopMASK subkpncode.desktop<br />
<br />
Dies aktiviert folgende Optionen:<br />
* Datums/Zeit-Einstellung<br />
* Anrufweiterleitung<br />
* Anrufoptionen<br />
* Parameter zurücksetzen<br />
* Number Switch<br />
<br />
<br />
Die nützlichsten sind wohl die ersten Einträge.<br />
Bei dem "Number Switch" ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.<br />
<br />
<br />
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine [[File:demomode.desktop]] anlegen.<br />
<br />
Hierfür ist folgende Prozedur nötig:<br />
* im Terminal<br />
cd /usr/local/apps/Applications<br />
vi demomode.desktop<br />
<br />
* i drücken <br />
* folgendes Textfragment einfügen <br />
[Translation]<br />
File=QtopiaApplications<br />
Context=DemoMode<br />
[Desktop Entry]<br />
Exec=demomode<br />
Icon=Camera<br />
Type=Application<br />
Name[]=DemoMode<br />
* [Esc] <br />
* :wq [Enter] <br />
<br />
Dies schaltet einen Demo-Modus frei.<br />
<br />
=== Französisch ===<br />
Es gab die Geräte wohl auch in Frankreich von der France Telekom.<br />
Zumindest sind entsprechende monitor und upgrade Referenz-Dateien<br />
vorhanden in denen das steht. Daher wohl auch die Französischen<br />
Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem<br />
Unterverzeichnis, so das sie nicht auswählbar sind.<br />
<br />
Um diese Dateien zu aktivieren:<br />
<br />
cd /usr/local/i18n<br />
mv NOTUSED/fr .<br />
<br />
Nun ist auch noch französisch als Sprache verfügbar.<br />
<br />
== Grafische Anpassungen ==<br />
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).<br />
<br />
Einige besonders interessante werden hier aufgeführt:<br />
<br />
=== Eigene Startup/Shutdown-Animation ===<br />
<br />
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in<br />
<br />
/usr/local/pics/qpe<br />
<br />
Die Links "splash.gif" und "goodbye.gif" zeigen auf die tasächlich zu verwendenen Dateien ("splash-chuck.gif", "goodby-chuck.gif").<br />
Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die<br />
splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte<br />
mit:<br />
<br />
rm /usr/local/pics/qpe/splash.gif<br />
<br />
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die<br />
eigene Datei:<br />
<br />
ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif<br />
<br />
Danach wird dann bei jedem Neustart die eigene Animation angezeigt.<br />
Analog hierzu mit der goodbye.gif.<br />
<br />
<br />
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet<br />
anmelden und:<br />
<br />
<c><br />
cd /usr/local/pics/qpe/<br />
wget http://dein.server/woauchimmer/Matrix5.gif<br />
rm /usr/local/pics/qpe/splash.gif<br />
ln -s Matrix5.gif splash.gif<br />
</c><br />
<br />
Die GIF Animation kann bis zu 176x220 Pixel groß sein.<br />
Kleinere (möglicherweise auch größere) Bilder werden zentriert.<br />
<gallery><br />
Bild:walking_baby_tux.gif<br />
Bild:custwakeup2.gif<br />
Bild:custgoodbye2.gif<br />
Bild:94vw4.gif<br />
Bild:1_Matrix--16984.gif<br />
Bild:1_Matrix--16985.gif<br />
Bild:3.gif<br />
Bild:ClanSpider2.gif<br />
Bild:TS12.gif<br />
Bild:Matrix5.gif<br />
Bild:qtopia3.gif<br />
Bild:qtopia0.gif<br />
</gallery><br />
<br />
=== Eigener Boot/Update-Screen ===<br />
<br />
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.<br />
/user_data/data/welcome.rgb565<br />
/usr/local/startup_V4.20/update.bin<br />
<br />
Weitere Beispielbilder:<br />
/user_data/prod/data/lcd_test_card1.bin<br />
/user_data/prod/data/lcd_test_card2.bin<br />
<br />
Diese werden direkt in den Framebuffer geschrieben.<br />
Daher müssen sich diese genau ein bestimmtes Format halten: <br />
* Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)<br />
* 16bit pro Pixel RGB565<br />
<br />
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:<br />
# Ein Bild in Gimp mit 176x220 erstellen<br />
# das Bild vertikal spiegeln<br />
# Bild->Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)<br />
# Datei->Kopie speichern...<br />
# Als Windowsbitmap -> erweiterete Optionen -> 16bit R5G6B5<br />
# BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)<br />
tail -c 105600 input.bmp > output.raw<br />
<br />
<br />
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.<br />
cat /user_data/prod/data/lcd_test_card1.bin > /dev/fb0<br />
<br />
== Wichtige Verzeichnisse ==<br />
<br />
=== Adressdaten ===<br />
<br />
# cat /user_data/home/Applications/addressbook/addressbook.xml <br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Addressbook ><AddressBook><br />
<Groups><br />
</Groups><br />
<Contacts><br />
<Contact<br />
Uid="-1269720893" <br />
Categories="-1269431263;-1266109093;-1266109094" <br />
FirstName="ich" <br />
FileAs="ich" <br />
JobTitle="cc" <br />
Department="dep"<br />
Company="aa" <br />
BusinessPhone="55" <br />
BusinessFax="77" <br />
BusinessMobile="66" <br />
HomePhone="55"<br />
HomeMobile="11" <br />
HomePc="12"<br />
HomeData="13"<br />
HomeFax="14"<br />
BusinessStreet="street"<br />
BusinessCity="city"<br />
BusinessState="state"<br />
BusinessZip="zip"<br />
BusinessCountry="country"<br />
BusinessPager="88"<br />
Office="office"<br />
Profession="prof"<br />
Assistant="ass"<br />
Manager="man"<br />
HomeStreet="ptjml"<br />
HomeCity="cit"<br />
HomeState="stat"<br />
HomeZip="zi"<br />
HomeCountry="coun"<br />
Spouse="spouse"<br />
Gender="1"<br />
Birthday="20100322"<br />
Anniversary="20100429"<br />
Children="child"<br />
Notes="gakm"<br />
CompanyPronunciation="bb"<br />
BUSINESS_CONTACT=""<br />
photofile="ci-1269721575-0.jpg"<br />
qdl-private-data=""<br />
tone="/usr/local/etc/SystemRingTones/16-Tetris.desktop"<br />
/><br />
<Contact Uid="-1269554029" <br />
FirstName="VoIP" <br />
LastName="Phone1" <br />
FileAs="VoIP Phone1" <br />
HomeMobile="**621" <br />
tone="/usr/local/etc/SystemRingTones/15-Techno2.desktop" /><br />
<Contact Uid="-1269554032" <br />
Categories="-1269431263"<br />
FirstName="VoIP" <br />
LastName="Phone3" <br />
FileAs="VoIP Phone3" <br />
HomeMobile="**623" <br />
BUSINESS_CONTACT="" <br />
qdl-private-data="" <br />
tone="/usr/local/etc/SystemRingTones/08-Celtrelax.desktop" /><br />
</Contacts><br />
</AddressBook><br />
<br />
UID ist wohl egal, solange sie nicht zweimal vorkommen.<br />
<br />
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben<br />
"maxEntries = 500" in der "Contacts.conf"<br />
<br />
Die Kategorien stehen in /user_settings/Categories.xml:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE CategoryList><br />
<Categories><br />
<Category id="-1269431263" name="_Personal" /><br />
<Category id="-1269431262" name="_Business" /><br />
</Categories><br />
<br />
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".<br />
<br />
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!<br />
<br />
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).<br />
<br />
=== Fotos & Videoschnappschüsse ===<br />
<br />
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:<br />
/user_data/home/Documents<br />
<br />
Die Bilder sind dabei nach folgendem Namensschema benannt:<br />
<br />
DD-MM-YYYY-hh:mm:ss.jpg<br />
<br />
Tag (DD) und Monat (MM) können auch einstellig sein.<br />
<br />
== Klingeltöne ==<br />
<br />
Die Klingeltöne liegen, wie oben beschrieben unter:<br />
<br />
/usr/local/etc/SystemRingTones/<br />
<br />
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich, z.B. mit MhWaveEdit (Linux/GTK) recht komfortabel erzeugen lassen.<br />
<br />
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird.<br />
Eine für den fiktiven 16. Klingelton erzeugte Datei "16-Tetris.desktop" könnte den folgenden Inhalt haben:<br />
<br />
[Desktop Entry]<br />
Categories =<br />
File =16-Tetris.wav<br />
Name[] =16-Tetris<br />
Type = audio/x-wav<br />
[Translation]<br />
File=QtopiaRingTones<br />
Context=16-Tetris<br />
<br />
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.<br />
<br />
<br />
=== Timeserver ===<br />
<br />
http://www.mikrocontroller.net/topic/170483#1645101<br />
Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg<br />
die Adressen der Zeitserver "ntp.xs4all.nl" und "130.142.110.71". Diese<br />
könnte man z.B. auf "ptbtime1.ptb.de" und "ptbtime2.ptb.de" ändern.<br />
<br />
(http://www.mikrocontroller.net/topic/170483#1649594)<br />
das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 -<br />
chronos.zedat.fu-berlin.de kann man als server nehmen.<br />
<br />
== Zusätzliche Software ==<br />
=== Dropbear (SSH-Server) installieren ===<br />
<br />
# Mit telnet auf dem Gerät einloggen<br />
# folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://vp6500.bd8.nl/bin/dropbear.tgz<br />
tar -xzf dropbear.tgz<br />
rm dropbear.tgz<br />
cd /etc/rc.d/init.d<br />
mv dropbear S90dropbear<br />
./S90dropbear start<br />
Kommando 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch<br />
gestartet wird.<br />
<br />
=== Nano 2.2.3 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /usr/bin<br />
wget http://www.mikrocontroller.net/attachment/74023/nano<br />
* Mit folgendem Befehl den Editor ausführbar machen:<br />
chmod +x /usr/bin/nano<br />
* Nun ist vi Geschichte ;-)<br />
<br />
=== OpenVPN 2.0.9 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74380/openvpn.tar.gz<br />
tar -xzf openvpn.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== OpenVPN 2.1.1 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74395/openvpn-2.1.1.tar.gz<br />
tar -xzf openvpn-2.1.1.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== Tinc 1.0.12 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74396/tinc-1.0.12.tar.gz<br />
tar -xzf tinc-1.0.12.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
= SIP Einstellungen =<br />
<br />
== Einstellung für 1und1 ==<br />
<br />
* SIP1:<br />
** Display Name: ...<br />
** Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Telephone Number: 0#VORWAHLOHNE0#NUMMER#<br />
* Auth:<br />
** Auth Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Password: *********<br />
* Server:<br />
** sip.1und1.de:5060<br />
* Proxy:<br />
** sip.1und1.de:5060<br />
* RTP:<br />
** 30000 und 30019<br />
* STUN:<br />
** stun.1und1.de<br />
* STUN Server Port:<br />
** 3478<br />
* SIP2:<br />
** UDP: 5060<br />
** TCP: 5060<br />
<br />
== Einstellung für Sipgate ==<br />
<br />
*SIP1<br />
**Display Name: Sipgate Username<br />
**User Name: your SIPgate-ID<br />
**Telephone Number: Sipgate-Telefonnummer<br />
*Auth<br />
**Authentification UserName: your SIPgate-ID<br />
**Password: Sipgate Passwort<br />
*Server<br />
**SIP register address:port: sipgate.de:5060<br />
*Proxy<br />
**SIP proxy1 address:port: sipgate.de:5060<br />
*SIP2<br />
**SIP Port Listen<br />
**for UDP: 5062<br />
**for TCP: 5062<br />
**for TCP TLS: 5053<br />
*STUN: [X] use rport<br />
<br />
SIP Outbound muss leer sein.<br />
<br />
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.<br />
<br />
== Einstellung für Ekiga.net ==<br />
<br />
*SIP1<br />
**Display Name: Irgendwas<br />
**User Name: username<br />
**Telephone Number: leer<br />
*Auth<br />
**Authentication User Name: username<br />
**Password: password<br />
*Server<br />
**SIP register: ekiga.net:5060<br />
**Protocol: ( ) TCP (*) UDP<br />
**Expire Timer: 3600<br />
**Keep Alive: 0<br />
*Proxy<br />
**alle leer<br />
*STUN<br />
**( ) use rport<br />
**STUN Server IP address: stun.ekiga.net<br />
**STUN Server port: 3478<br />
*SIP2<br />
**(*) Symmetric Mode<br />
**UDP: 5060<br />
**TCP: 5060<br />
**TCP TLS: 5061<br />
*OBproxy<br />
**alle leer<br />
<br />
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.<br><br />
Weitere features: https://www.ekiga.net/index.php?page=services<br><br />
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.<br> <br />
<p>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 <b>einen neuen Kontakt</b> (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 <b>[#]</b>-Taste des VP5500/6500 umschalten.</p><br />
<p>Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der <b>Video-Taste</b> auf der Tastatur des VP6500</p><br />
<br />
== Einstellung für Fritzbox 7170/7270 und andere mit SIP-Registrar ==<br />
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,<br> dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.<br> Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.<br><br />
<br><br />
Im Beispiel will die FB die Nummer 621 vergeben:<br><br />
'''Reiter SIP1'''<br><br />
Display Name: <leer lassen><br><br />
User Name: 621<br><br />
Telephone Number: 621<br><br />
<br><br />
'''Reiter Auth'''<br><br />
Authentication UserName: 621<br><br />
Password: [hier das gleiche, wie auf der FB eingeben]<br><br />
<br><br />
'''Reiter Server'''<br><br />
SIP register address:port<br><br />
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060<br><br />
Protocol: UDP<br><br />
ExpireTime: 3600<br><br />
Keep Alive: 300<br><br />
<br><br />
'''Anmerkungen dazu:'''<br><br />
Protokoll: UDP<br><br />
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.<br> <br />
Keep Alive: 300<br><br />
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen <br>wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so <br>aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.<br><br />
Anmeldung:<br><br />
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.<br> Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.<br><br />
<br />
Falls eure Fritz!Box keine Möglichkeit bietet, ein IP-Telefon anzumelden, empfehle ich euch mal in das http://wiki.ip-phone-forum.de/skript:speedport2fritz einzulesen.<br><br />
Bzw. mal im IP-Phone-Forum nach SIP-Registrar suchen.<br><br />
<br />
= Buildumgebung erstellen =<br />
<br />
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.<br />
<br />
== Windows ==<br />
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.<br />
<br />
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).<br />
<br />
=== Freetz-Linux ===<br />
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).<br />
Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.<br />
<br />
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus.<br />
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.<br />
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.<br />
<br />
Benutzername und alle Kennwörter sind 'freetz'<br />
<br />
==== Installation und Test der VP5500 Toolchain ====<br />
Installation der Buildumgebung:<br />
sudo mkdir /opt/VP5500<br />
sudo mkdir /opt/VP5500/toolchain<br />
cd /opt/VP5500/toolchain<br />
sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2<br />
sudo bunzip2 arm-linux-gcc-3.3.2.tar.bz2<br />
sudo tar -xf arm-linux-gcc-3.3.2.tar<br />
sudo rm arm-linux-gcc-3.3.2.tar<br />
sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm<br />
<br />
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.<br />
<br />
Test der Buildumgebung:<br />
cd ~<br />
wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz<br />
tar -xzf helloworld.tgz<br />
rm helloworld.tgz<br />
cd helloworld<br />
make<br />
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.<br />
<br />
==== Freetz-Linux eigentlicher Anwendungszweck ====<br />
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen.<br />
Folgende Schritte machen dies:<br />
cd ~<br />
svn checkout http://svn.freetz.org/trunk freetz-trunk <br />
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis 'freetz-trunk'.<br />
Konfigurieren mit 'make menuconfig' und Image erstellen mit 'make'.<br />
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.<br />
<br />
Für detailiertere Infos bitte direkt bei Freetz nachschlagen:<br />
http://trac.freetz.org/<br />
<br />
== Linux ==<br />
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.<br />
<br />
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.<br />
<br />
=== Hello World ===<br />
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.<br />
<br />
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von "make" compiliert.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung ===<br />
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).<br />
<br />
= Hardware + Software Versionen =<br />
<br />
Listet mal eure Hardware- und Softwareversion aus dem '''Applications''' => '''System Info''' Menü auf, wenn sie hier noch nicht stehen!<br />
<br />
== VP5500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|- <br />
| ind5 ||0645 || 4.20<br />
|- <br />
| ind5 ||0647 || 4.20<br />
|-<br />
| ind5 ||0648 || 4.20<br />
|-<br />
| ind5 ||0649 || 4.20<br />
|-<br />
| ind5 ||0702 || 4.20<br />
|}<br />
<br />
== VP6500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|-<br />
| ind3-v2 || 0711 || 3.22<br />
|-<br />
| ind3-v2 || 0713 || 3.22<br />
|- <br />
| ind3-v2 || 0716 || 3.22<br />
|}<br />
<br />
= Stromaufnahme =<br />
<br />
== VP5500 ==<br />
FIXME <br />
<br />
== VP6500 ==<br />
<br />
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 ein geringer Abfall über die Schottky-Diode einzurechnen ist). <br />
<br />
=== Messungen ===<br />
* Booten: bis zu 420mA<br />
* Einbuchen: ca. 400mA<br />
* mit abgeschaltetem Display, aber eingebucht und laufend (idle): ca. 80mA<br />
* mit angeschaltetem Display, eingebucht und idle: ca. 190mA<br />
* mit 100% Prozessor-Last (von serieller Konsole ausgeführt: "while true; do true; done"): ca. 60mA mehr als idle (Scheint aber auch größere Sprünge für andere CPU-Last zu geben)<br />
* im 'Deep Sleep' (wird ein paar Minuten nach Einschalten erreicht): <10mA (!), mit kurzen Wachphasen mit erheblichem Stromverbrauch (>100mA). Beachte: Die serielle Konsole ist in diesem Modus auch nicht mehr aktiv, das Telefon ist aber nicht abgestürzt (Tastendruck aktiviert die Konsole wieder).<br />
<br />
=== Ladegerät ===<br />
* Phone nicht in der Ladeschale: < 0.2W<br />
* Phone wird geladen: ca 4W</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&diff=45707PHILIPS VP5500 VoIP Telefon2010-04-05T08:03:02Z<p>Dl3daz: /* Startscripten */</p>
<hr />
<div>= Verwandte Artikel =<br />
* Konfiguration: http://www.mikrocontroller.net/topic/170483#new<br />
* Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new<br />
* http://das-labor.org/wiki/VP5500<br />
* (Hack) http://spritesmods.com/?art=vpx500<br />
* http://vp6500.bd8.nl/<br />
<br />
= Features =<br />
* Kamera-Auflösung 640x480 Pixel<br />
* 30 Bilder pro Sekunde<br />
* Kamera um 240° drehbar<br />
* 5,6 cm (2,2") TFT-Display, 176x220 Pixel, 65000 Farben<br />
* Audio-/Video-Ausgang (4fach Klinke-Cinch, beim VP5500 2,5mm Klinke und beim VP6500 3,5mm Klinke)<br />
* integrierter Li-Ion Akku, 3,7 V-/1100 mAh<br />
* englische und niederländische Menüsprache<br />
* Software Qtopia Version 2.1.0<br />
* Maße (LxBxH): 134x49x24 mm.<br />
<br />
[[Datei:Philips_VP5500.jpg]]<br />
<br />
= Hardware =<br />
* MCU: Freescale MC9328MX21 (ARM9) @ 266MHz<br />
* PC-to-TV-Konverter-Chip: FS455LF<br />
* WLAN: Marvell 88w8385, als Modul von WM-G-MR-01 (VP5500) / Philips BGW211, on-board (VP6500)<br />
* SDRAM: 2 x K4S56163LF - 4M x 16Bit x 4 Banks<br />
* 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<br />
* Kamera: dc-4626.a5 by chicony<br />
* Display: Samsung LTS220QC (HD66772 Controller)<br />
<br />
== System-Takte ==<br />
# cat /proc/systclk<br />
System clocks state:<br />
Ref clock : 32768Hz (int, premult by 512)<br />
MPLL clock: 263999905Hz (computed: 264000000Hz)<br />
SPLL clock: 163840000Hz (computed: 163840000Hz)<br />
CPU clock : 263999905Hz (PERSC = 0)<br />
Bus clock : 132000000Hz (BCLKDIV = 1, computed: 131999952Hz)<br />
CSI clock : unknown (cannot read register CSICR1)<br />
USB clock : 20480000Hz (USB_DIV = 7)<br />
Wait State: CS0U[WSC] = 10, CS0U[WSC] = 48<br />
loops_per_jiffy = 665058<br />
<br />
= Innenleben =<br />
<gallery widths="240" ><br />
<br />
Datei:Oberseite.jpg | Ansicht der Oberseite<br />
Datei:Oberseite_beschriftet.jpg | Oberseite mit Beschriftung der Bauteile<br />
Datei:Drumherum.jpg | Übersicht über die Komponenten<br />
</gallery><br />
<br />
<gallery widths="240" ><br />
Datei:Kontakte_Oberseite.jpg | UART-Schnittstelle Oberseite<br />
Datei:Kontakte_Unterseite.jpg | JTAG-Schnittstelle Unterseite<br />
</gallery><br />
<br />
<br />
== Testpins ==<br />
Original Liste von [http://www.mikrocontroller.net/topic/170483#1646514 Tino] [[Media:Philips vp5500 Liste Testpins.pdf|herrunterladen]].<br />
<br />
[[Bild:Philips vp5500 testpins 1.jpg|thumb| Testpins auf der Rückseite]]<br />
[[Bild:Philips vp5500 testpins 2.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]<br />
<br />
{| class="wikitable"<br />
! Testpin Nr. !! verbunden zu !! Funktion<br />
|-<br />
| 1 || LED || unbekannt<br />
|-<br />
| 2 || Kamera Pin 8 an CN1 || unbekannt<br />
|-<br />
| 3 || Pin 4 an IC1 || unbekannt<br />
|-<br />
| 4 || z.B. IC5 Pin V 18 || VDDA<br />
|-<br />
| 5 || GND || GND<br />
|-<br />
| 6 || NC || NC<br />
|-<br />
| 7 || Pin E 16 an IC5 || SAP_CLK<br />
|-<br />
| 8 || Pin 1 an CN 3 || Lautsprecher<br />
|-<br />
| 9 || Pin 2 an CN 3 || Lautsprecher<br />
|-<br />
| 10 || Pin an CN 4 || ?<br />
|-<br />
| 11 || Pin an CN 4 || ?<br />
|-<br />
| 12 || Pin an CN 4 || ?<br />
|-<br />
| 13 || Pin L 16 an IC5 || UART2_TXD<br />
|-<br />
| 14 || Pin C 12 an IC5 || USBH1_RXDM<br />
|-<br />
| 15 || Pin H 12 an IC5 || USBH1_TXDP<br />
|-<br />
| 16 || Pin B 19 an IC5 || CSPI2_SS2<br />
|-<br />
| 17 || Pin B16 an IC5 || SSI2_FS<br />
|-<br />
| 18 || Pin F 18 an IC5 || KP_ROW0<br />
|-<br />
| 19 || Pin K 18 an IC5 || KP_COL4<br />
|-<br />
| 20 || Pin L 19 an IC5 || UART3_TXD<br />
|-<br />
| 21 || Pin T 14 an IC5 || RESET_IN<br />
|-<br />
| 22 || geht an + des Kondensators neben IC6 || unbekannt<br />
|-<br />
| 23 || Pin D 13 an IC 9 || CLKOUT<br />
|-<br />
| 24 || Pin E 13 an IC 9 || CLKIN_P<br />
|-<br />
| 25 || Pin A 9 an IC 9 || DAC_D<br />
|-<br />
| 26 || Pin A 8 an IC 9 || DAC_A<br />
|-<br />
| 27 || Pin A 7 an IC 9 || DAC_B<br />
|-<br />
| 28 || Pin A 6 an IC 9 || DAC_C<br />
|-<br />
| 29 || Pin L 13 an IC 5 || UART1_TXD<br />
|-<br />
| 30 || Pin T 16 an IC 5 || BOOT1<br />
|-<br />
| 31 || Pin K 10 an IC 5 || UART1_RXD<br />
|-<br />
| 32 || Pin U 17 an IC 5 || BOOT2<br />
|-<br />
| 33 || Pin 9 an IC 23 || unbekannt<br />
|-<br />
| 34 || Pin D 19 an IC5 || CSPI2_SCLK<br />
|-<br />
| 35 || Pin C 14 an IC5 || TIN<br />
|-<br />
| 36 || Pin C 19 an IC5 || CSPI2_SS1<br />
|-<br />
| 37 || Pin D 18 an IC5 || CSPI2_SS0<br />
|-<br />
| 38 || Pin E 19 an IC5 || CSPI2_MOSI<br />
|-<br />
| 39 || Pin H 19 an IC5 || PWMO<br />
|-<br />
| 40 || Pin J 9 an IC 7 und IC 8 || VDD<br />
|-<br />
| 41 || Pin J 19 an IC 5 || KP_COL2<br />
|-<br />
| 42 || Pin K 16 an IC 5 || KP_COL3<br />
|-<br />
| 43 || Pin J 11 an IC 5 || KP_ROW2<br />
|-<br />
|44 || Pin J 17 an IC 5 || KP_COL1<br />
|-<br />
|45 || Pin G 19 an IC 5 || KP_ROW4<br />
|-<br />
|46 || Pin G 17 an IC 5 || KP_ROW3<br />
|-<br />
|47 || Pin D 5 an IC 10 und IC 11 || ACC<br />
|-<br />
|48 || Pin G 16 an IC 5 || KP_ROW1<br />
|-<br />
|49 || Pin J 18 an IC 5 || KP_COL0<br />
|-<br />
|50 || Pin V 18 an IC 5 || VDDA<br />
|-<br />
|51 || Pin 2 an CN KB-Stecker || ?<br />
|-<br />
|52 || Pin 2 an IC 15 || ?<br />
|-<br />
|53 || Pin 4 am LCD Stecker || ?<br />
|-<br />
|54 || Pin E 17 an IC 5 || CSPI2_MISO<br />
|-<br />
|55 || Pin 1,2,3,10,13 am LCD Stecker || ?<br />
|-<br />
|56 || Pin 3 an IC 16 || ?<br />
|-<br />
|57 || Pin U 10 an IC 5 || PC_PWRON<br />
|-<br />
|58 || Pin 1 IC 18 || ?<br />
|-<br />
|59 || an Diode über IC 16 || ?<br />
|-<br />
|60 || Pin 3 an IC 25 || ?<br />
|-<br />
|61 || Ladekontakt positiv || Ladegerät +<br />
|-<br />
|62 || GND || GND<br />
|-<br />
|63 || Akku Mittelkontakt || Akkustand? Temperatur?<br />
|-<br />
|64 || Transistor unter IC 16 || ?<br />
|-<br />
|65 || Pin 2 an IC 22 || ?<br />
|-<br />
|66 || Pin 1,12,30 an IC 24 || VSS<br />
|-<br />
|67 || Kondensator + unter IC 20 || ?<br />
|-<br />
|68 || Pin 5 an IC 21 || ?<br />
|-<br />
|69 || Pin 2 an IC 4 || ?<br />
|-<br />
|70 || Pin 25 an IC24 || MCLK<br />
|-<br />
|71 || Prozessor Pin W 14 || QVDD<br />
|}<br />
<br />
== UART ==<br />
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren.<br />
Jedoch startet dann das Telefon nicht vollständig (Fix siehe [[#Betrieb mit aktiverter serieller Schnittstelle]])<br />
<br />
* Spannungs-Pegel: 3.3V<br />
* Baudrate: 115200kbps<br />
* Stopbits: 1<br />
* Flussteuerung: keine<br />
=== VP5500 ===<br />
[[Bild:VP5500_seriell_highlight.svg|100px|UART-Pins VP5500(Frontseite der Platine)]]<br />
<br />
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br />
<br />
=== VP6500 ===<br />
[[Bild:VP5600-Serialport-Preliminary.jpg|100px|UART-Pins VP6500]]<br />
<br />
Die serielle Schnittstelle ist unter vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br><br />
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.<br />
<br />
== JTAG ==<br />
[[Bild:jtag.jpg Belegung der JTAG-Pins (Rückseite der Platine)]]<br />
<br />
= Hardware Modifikationen =<br />
== Zerlegen des Telefons ==<br />
<gallery><br />
Datei:01_offen_von_Hinten.JPG|1. Geöffnetes Akkufach<br />
Datei:02_Blende_entfernt.JPG|2. hintere Schwarze Blende entfernt<br />
Datei:03_Rückseite_entfernt.JPG|3. Schalenrückteil entfernt<br />
Datei:04_aufhebeln_Vorderteil.JPG|4. Druck nach außen<br />
Datei:05_vorderteil_entfernt.JPG|5. entferntes Vorderteil<br />
Datei:06_Elektronik_entfernt.JPG|6. entfernte Elektronik<br />
</gallery><br />
<br />
# das Akkufach muss geöffnet und die Schrauben entfernt werden<br />
# hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen<br />
#* 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.<br />
# Nun kann einfach das rückseitige Schalenteil abgeschaubt werden<br />
# das Entfernen des Frontschalenteils ist etwas tricky:<br />
#* von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten<br />
#* etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.<br />
#* Mit 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 außen wirkt.<br />
#* Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritisch, wenn der Bügel ein wenig anbricht)<br />
# Die Platine zu entfernen ist nicht ganz so schwierig.<br />
#* Zuerst die Seite auf der keine Knöpfe sind:<br />
#* vorichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten <br />
#* dann versuchen die Paltine seitlich nach oben aus dem Gehäuse zu ziehen<br />
#* dabei auf das Lautsprecherkabel und den Kamerakonnektor achten<br />
# Zusammenbau genauso, nur umgedreht ;)<br />
#* nicht die Lautsprecher- und Kamera-Stecker vergessen<br />
<br />
== Buchse für Uart einbauen ==<br />
<gallery><br />
Datei:10_Pins.JPG|1. unbearbeitete Pinreihe<br />
Datei:11_Pins_bearbeitet.JPG|2. präperierte Pinreihe<br />
Datei:09_Pads.JPG|3. präperierte Pads<br />
Datei:12_Pins_ausrichten.JPG|4. Pinreiheausrichten<br />
Datei:13_Pins_angelötet_1.JPG|5. angelötete Pinreihe<br />
Datei:14_Pins_angelötet_2.JPG|6. angelötete Pinreihen<br />
Datei:08_Mittelteil.JPG|7. Mittelteil mit ausgefeiltem Loch<br />
Datei:15_Mittelteil_zusammengebaut.JPG|8. wieder zusammengesteckt<br />
Datei:16_in_Aktion.JPG|9.verbundene serielle Schnittstelle<br />
</gallery><br />
<br />
Zunächst muss das Telefon zerlegt werden ([[#Zerlegen des Telefons]])<br />
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. <br />
<br />
# Hierfür habe ich einreihige gedrehte IC-Sockel genutzt <br />
# deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)<br />
# ebendso auf die Pads ein wenig eingezinnt<br />
# ausrichten und festlöten<br />
# eine Reihe<br />
# die zweite Reihe<br />
# 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.<br />
# fertig<br />
# und im Einsatz<br />
<br />
= Das VPx500 'rooten' =<br />
<br />
Um Zugang zu den Dateien auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten<br />
<br />
# serielle Schnittstelle<br />
<br />
Dazu muß der [[UART]] angeschlossen werden. Während des Bootvorgangs drückt man immer wieder ziellos irgendwelche Tasten bis man am Prompt des Bootloaders ist.<br />
<br />
Dann kann man <br />
<br />
boot root=/dev/mtdblock2 init=/bin/sh<br />
<br />
eingeben, um an eine Shell zu kommen.<br />
<br />
# telnet<br />
<br />
telnet ist der komfortablere Weg. Um telnet zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf den Updateserver von KPN zuzugreifen (den es nicht mehr gibt). Glücklicherweise geschieht dies nicht über eine feste IP, sondern über einen Hostnamen, so dass man an dieser Stelle sich durch einen eigenen DNS den Domainname auf einen eigenen Server umleiten kann. Daher ist im eignenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte 'Static DNS', ..).<br />
Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.<br />
<br />
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:<br />
<br />
telnet 123.456.789.012<br />
# <br />
<br />
Passwort ist "toor".<br />
Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.<br />
<br />
Unter Applications>Registration sind Netzwerk- und VoIP-Einstellungen zu finden.<br />
<br />
== Anleitung für Fritz-Box-Benutzer ==<br />
Die Fritzboxen bieten bisher leider keine Möglichkeit, den verwendeten DNS<br />
direkt im Webinterface zu ändern, über Umwege geht es aber doch:<br />
* Über das Webinterface der Fritzbox die Einstellungen sichern<br />
* Exportdatei im Texteditor öffnen (am besten nicht Notepad, da der die Unix-Zeilenumbrüche nicht versteht - zur Not geht auch Wordpad)<br />
* nach overwrite_dns1 suchen (gibt es zwei mal) und da den DNS 84.38.68.30 oder 188.40.123.50 eintragen<br />
* am Anfang der Exportdatei VOR "**** CFGFILE:ar7.cfg" eine Zeile 'NoChecks = yes' einfügen, damit die Fritzbox die nun nicht mehr passende Checksumme ignoriert.<br />
* Einstellungen zurück in die Fritzbox übertragen.<br />
<br />
Wenn die Telefone entsperrt sind, den DNS wieder entfernen (Es ist<br />
vielleicht eine ganz gute Idee, wenn man da zwei unabhängige DNS-Server<br />
einträgt, so umgeht man auch gleich providerseitige DNS-Sperren)<br />
<br />
= Voice over IP (VoIP, SIP) =<br />
<br />
*http://de.wikipedia.org/wiki/IP-Telefonie<br />
*http://de.wikipedia.org/wiki/Session_Initiation_Protocol<br />
*http://de.wikipedia.org/wiki/H.323<br />
*http://de.wikipedia.org/wiki/Softphone<br />
<br />
Benutzer ist 103<br />
<br />
Mit Ekiga konnte so per 103@xxx.xxx.xxx.xxx eine Sprachverbindung zum Telefon aufgebaut werden.<br />
<br />
= Software Modifikationen =<br />
== Vorsicht Fallen ==<br />
Es ist nicht schwer, sich den Zugang zum Telefon abzuschneiden, wenn man nicht aufpasst.<br />
=== Startscripten ===<br />
Die Scripten in /etc/rc.d/" müssen im Hintergrund laufen. Tut ein Script das nicht, ist an dieser Stelle Schluß mit dem Bootvorgang.<br />
<br />
Dann darf man als nächstes den Lötkolben anheizen und die serielle Schnittstelle ([[#UART]]) zugänglich machen.<br />
<br />
== Grundlagen ==<br />
Bestimmte Aktionen werden immer wieder benötigt.<br />
Diese sollen hier kurz beschrieben werden.<br />
<br />
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.<br />
<br />
=== Dateien bearbeiten mit vi===<br />
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können.<br />
Für eine genaue Bedienung bitte Google benutzen.<br />
Die wichtigsten Bedienelemente werden hier kurz erläutert.<br />
<br />
Datei Öffnen mit 'vi Dateipfad'<br />
vi kennt zwei Modi: Kommando- und Einfüge-Modus.<br />
i - wechselt in den Einfüge-Modus, in dem geschrieben werden kann<br />
<br />
[Esc] wechselt zurück in den Kommandomodus. <br />
In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.<br />
:x - löscht das Zeichen an Cursor position<br />
:dd - löscht die ganze zeile<br />
:<nowiki>:</nowiki>q! - schließt ohne zu speichern<br />
:<nowiki>:</nowiki>w - speichert<br />
:<nowiki>:</nowiki>wq - speichert und beenden<br />
<br />
=== Dateien auf das Telefon laden ===<br />
Um Daten von einem http-Server zu laden, benutzt man <br />
wget url<br />
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.<br />
<br />
Um Daten von einem ftp-Server zu laden, benutzt man ftp.<br />
Auch hier muss vorher in das zielverzeichnis gewechselt werden.<br />
ftp hostname<br />
dann gegebenenfalls die Zugangsdaten eingeben und mittels 'cd' und 'ls' in das Entsprechende Verzeichnis auf dem FTP-Server wechseln<br />
und anschließend mittels <br />
get dateiname<br />
die Datei herunterladen.<br />
<br />
=== Dateien vom Telefon herunterladen ===<br />
Auch hier bietet sich ein FTP an.<br />
Mittels 'ftp hostname' verbinden, Benutzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels<br />
put localeDatei<br />
eine Lokale Datei hochladen.<br />
<br />
=== Alternative Dropbear ===<br />
<br />
Wurde der dropbear-ssh server installiert [[#Dropbear (SSH-Server) installieren]] können mittels eines Programms mit SCP-Unterstützung (zB. [http://winscp.net/eng/docs/lang:de WinSCP] für Windows) sehr komfortabel Dateien ausgetauscht werden.<br />
<br />
Mit WinSCP können auch Dateien direkt bearbeitet werden.<br />
Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.<br />
<br />
== Backup ==<br />
=== Backup des Flash ===<br />
If you want to make a backup of your root partition, you can do as<br />
follows:<br />
<br />
<c><br />
echo '#!/bin/sh' > /tmp/backup.sh<br />
echo 'cat /dev/mtdb2 2>/dev/null' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
micro_inetd 31337 /tmp/backup.sh<br />
</c><br />
<br />
This'll make your device listen for incoming connections on port 31337.<br />
On your host system you may then simply run <br />
nc ip.of.your.phone 31337 > fon_rootfs<br />
et voilà, you got your rootfs packed into a file.<br />
<br />
Note that the backed up file is not ext2, but a jffs2 formatted<br />
filesystem. These can't be handled by a simple "mount -o loop" as you'd<br />
have thought... so here's how you mount it:<br />
<br />
<c><br />
modprobe jffs2<br />
modprobe mtdram total_size=32768 erase_size=128<br />
modprobe mtdblock<br />
mkdir /tmp/phone-root<br />
mknod /tmp/phone-mtdb2 b 31 0<br />
dd if=/your/backup/file of=/tmp/phone-mtdb2<br />
mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root<br />
</c><br />
<br />
[[#Dateisystem herunterladen]] describes another way to dump the filesystem for closer examination.<br />
<br />
=== Komplettes Backup ===<br />
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.<br />
<br />
cd /etc/rc.d/init.d<br />
wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe<br />
chmod +x /etc/rc.d/init.d/S91backup_pipe<br />
<br />
Damit wird eine Art Backup-Server mit dem Boot gestartet.<br />
wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.<br />
<br />
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:<br />
<br />
nc 192.168.1.3 31337 > fon_rootfs<br />
nc 192.168.1.3 31338 > fon_udata<br />
nc 192.168.1.3 31339 > fon_usettings<br />
nc 192.168.1.3 31340 > fon_bootld<br />
nc 192.168.1.3 31341 > fon_kernel<br />
<br />
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_*<br />
Dateinamen könnt ihr natürlich auch frei vergeben.<br />
<br />
fon_udata ist die /user_data Partition, fon_usertings dementsprechend<br />
die /user_settings Partition.<br />
<br />
Der bootld Bereich enthält auch die Parameter. Um das später (falls<br />
überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in<br />
zwei Teile aufgeteilt werden. Der erste enthält dann den reinen<br />
Bootloader-Bereich, der zweite die Parameter. Wer's wirklich braucht für<br />
den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll<br />
ist das aber nicht, hat man den Bootloader erstmal mit was anderem<br />
überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen<br />
benutzen....<br />
<br />
=== Zurückspielen der Backups ===<br />
<br />
1) Man braucht ein (die) Backup-Image(s).<br />
<br />
2) Serielle Verbindung zum Telefon<br />
<br />
3) Akku abstecken, wieder anstecken.<br />
<br />
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so<br />
das man im Bootloader landet. Dabei muss man recht schnell sein. Es<br />
sollte dann ein Prompt kommen:<br />
<br />
<c><br />
blob><br />
</c><br />
<br />
5) Nun gibt man ein <br />
xdownload param<br />
Wobei 'param' der Teil ist, den man wiederherstellen will:<br />
* blob - Bootloader (fon_bootld)<br />
* param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)<br />
* kernel - Der Kernel (fon_kernel)<br />
* ramdisk - Das Root-Filesystem / (fon_rootfs)<br />
* ramdisk2 - Das /user_data Filesystem (fon_udata)<br />
* ramdisk3 - Das /user_settings Filesystem (fon_usettings)<br />
<br />
Beim Backup ist blob + param in einer Datei, müsste man also ggf.<br />
erstmal aufsplitten.<br />
<br />
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den<br />
Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.<br />
<br />
7) Kaffee trinken, auf's Klo gehen, mit Frau/Freundin/Mutter ein Gespräch<br />
anfangen.<br />
<br />
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet<br />
wieder am "blob>" prompt. Nun gibt man<br />
flash param<br />
ein.<br />
<br />
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.<br />
<br />
10) "boot" eingeben. Da Telefon bootet nun normal.<br />
<br />
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das<br />
Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt<br />
man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle<br />
abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten<br />
(Akku kurz ab- und wieder anstöpseln)<br />
<br />
=== Dateisystem herunterladen ===<br />
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.<br />
<br />
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:<br />
<br />
<c><br />
echo '#! /bin/sh' > /tmp/backup.sh<br />
echo 'cd /' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
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<br />
micro_inetd 31340 /tmp/backup.sh<br />
</c><br />
<br />
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.<br />
<br />
Auf einem anderen Linux system (oder cygwin) kann mittels<br />
<c><br />
nc telefon-Ip 31340 > file.tar<br />
</c><br />
die Datei abgerufen werden.<br />
<br />
Der Vorgang dauert aber ein ganz paar Minuten.<br />
<br />
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.<br />
<br />
== Betrieb mit aktiverter serieller Schnittstelle ==<br />
<br />
Das 5500 scheint nicht komplett zu starten wenn man TIN auf low hat<br />
und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei<br />
<br />
/usr/local/startup/daemon.sh<br />
<br />
ziemlich am Anfang das TINDETECT="TRUE" ändert auf TINDETECT="FALSE"<br />
<br />
Danach startet er auch mit aktiver serieller Verbindung komplett durch<br />
und das Gerät ist ganz normal bedienbar.<br />
<br />
<br />
<br />
== Aktivierung WPA2 Unterstützung ==<br />
<p>Standardmäßig kann das Telefon nur WPA, dabei unterstützt es allerdings auch <b>WPA mit AES</b> Verschlüsselung.</p><br />
<p>Es gibt zwei verschiedene Tricks mit denen auch WPA2 aktiviert werden kann.<br />
Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).</p><br />
<br />
=== Trick1 ===<br />
Mittels<br />
vi /etc/marvell/wpa_supplicant.conf<br />
den Texteditor starten.<br />
Mit PageDown (Bild runter) bis zum Ende des Files gehen.<br />
Die Zeilen <br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
auskommentieren, indem ein # vorangestellt wird:<br />
* cursor auf Beginn einer Zeile <br />
* i drücken zum Einfügen<br />
* # eintippen<br />
* [Esc]<br />
Sind alle Zeilen auskommentiert, dann mittels<br />
:wq[enter]<br />
abspeichern und Editor verlassen.<br />
<br />
Danach neu booten.<br />
<br />
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)<br />
<br />
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.<br />
<br />
Wichtige Info von airmack via IRC:<br />
<br />
'''Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf <u>hinten anzuhängen</u>, niemals aber vorne einzufügen!'''<br />
<br />
=== Trick2 ===<br />
Dieser Trick funktioniert mit Accesspoints, bei denen man auch WPA Verbindungen mit AES verschlüsseln kann. Vorteil dieses Tricks ist, dass man die wpa_supplicant.conf nicht manuell editieren muss. Allerdings unterstützt nicht jeder Accesspoint WPA mit AES (aber dd-wrt kann das).<br />
<br />
Man konfiguriert den Accesspoint zunächst mit WPA PSK und wählt AES als Verschlüsselungsalgorithmus. Jetzt meldet man das Telefon an, das Telefon erkennt richtig, dass eine WPA Verbindung vorliegt und verbindet sich per WPA und AES mit dem Accesspoint. Anschliessend konfiguriert man den Accesspoint von WPA PSK AES nach WPA2 PSK AES. Jetzt schaltet man das VP5500/6500 aus und wieder ein. Nachdem es fertig gebootet hat, verbindet es sich automisch per WPA2 PSK und mit AES Verschlüsselung. Fertig.<br />
<br />
== Menüs ==<br />
=== Hauptmenu ===<br />
<br />
Das File <br />
/usr/local/etc/defaultbuttons.conf<br />
enthält unter anderm die definition des Hauptmenus.<br />
<br />
Hierfür ist der Abschnitt Menu besonders interessant.<br />
[Menu]<br />
1 = Applications/camera.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications<br />
4 = Settings<br />
5 = Applications/addressbook.desktop<br />
6 = Settings/RingProfiles.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 2<br />
<br />
'Rows' und 'Columns' geben an, wieviel Reihen und Spalten das Hauptmenu hat.<br />
Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen.<br />
Die Menupunkte sind definiert in den Verzeichnissen unter <br />
/usr/local/apps<br />
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist.<br />
direkte Menupunkte haben Dateinamen mit der Endung .desktop<br />
'Default' bestimmten vorselektierten Eintrag.<br />
<br />
Hier ein weiteres Beispiel für ein angepasstes Menu:<br />
[Menu]<br />
1 = Applications/addressbook.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications/sysinfo.desktop<br />
4 = Applications<br />
5 = Settings<br />
6 = Games<br />
7 = Applications/camera.desktop<br />
8 = Applications/photoedit.desktop<br />
9 = Applications/manualsub.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 3<br />
<br />
Der Ordner Games ist (momentan ;) leer.<br />
<br />
=== Genereller Aufbau Menü-Einträge===<br />
Die Einträge für die Menüs sind im Filesystem abgelegt:<br />
<br />
* Settings: /usr/local/apps/Settings<br />
* Applications: /usr/local/apps/Applications<br />
* Klingeltöne: /usr/local/etc/SystemRingTones/<br />
<br />
Die Dateien haben die Endung ".desktop" und sind normale Textdateien, die die relevanten Infos enthalten.<br />
<br />
Ein Beispiel aus dem Settingsordner:<br />
[Translation]<br />
File=QtopiaSettings<br />
Context=Sound<br />
[Desktop Entry]<br />
Type=Application<br />
Exec=sound<br />
Icon=Sound<br />
Name[]=Sound<br />
CanFastload=0<br />
<br />
Der Abschnitt 'Translation' gibt an in welchem File, die Lokalisationsdaten stehen.<br />
<br />
Der Abschnitt 'Desktop Entry':<br />
* Type: Typ des Eintrages <br />
** Application für Anwendungen<br />
** audio/x-wav für Klingeltöne<br />
* Exec: Anwendung, die ausgeführt werden soll<br />
* Icon: Icon, das im Menü benutzt wird. <br />
** Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png<br />
** manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png<br />
* 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<br />
<br />
Hier ein Textfile mit allen desktop-Files als Referenz: [[File:alleDesktopFiles.txt]]<br />
<br />
=== Versteckte Menüeinträge ===<br />
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung '.desktopMASK'.<br />
Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschalten.<br />
<br />
folgendes an der Kommandozeile eingeben:<br />
cd /usr/local/apps/Settings<br />
mv datetime.desktopMASK datetime.desktop<br />
mv callforward.desktopMASK callforward.desktop<br />
mv calloptions.desktopMASK calloptions.desktop<br />
mv resetparam.desktopMASK resetparam.desktop<br />
mv subkpncode.desktopMASK subkpncode.desktop<br />
<br />
Dies aktiviert folgende Optionen:<br />
* Datums/Zeit-Einstellung<br />
* Anrufweiterleitung<br />
* Anrufoptionen<br />
* Parameter zurücksetzen<br />
* Number Switch<br />
<br />
<br />
Die nützlichsten sind wohl die ersten Einträge.<br />
Bei dem "Number Switch" ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.<br />
<br />
<br />
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine [[File:demomode.desktop]] anlegen.<br />
<br />
Hierfür ist folgende Prozedur nötig:<br />
* im Terminal<br />
cd /usr/local/apps/Applications<br />
vi demomode.desktop<br />
<br />
* i drücken <br />
* folgendes Textfragment einfügen <br />
[Translation]<br />
File=QtopiaApplications<br />
Context=DemoMode<br />
[Desktop Entry]<br />
Exec=demomode<br />
Icon=Camera<br />
Type=Application<br />
Name[]=DemoMode<br />
* [Esc] <br />
* :wq [Enter] <br />
<br />
Dies schaltet einen Demo-Modus frei.<br />
<br />
=== Französisch ===<br />
Es gab die Geräte wohl auch in Frankreich von der France Telekom.<br />
Zumindest sind entsprechende monitor und upgrade Referenz-Dateien<br />
vorhanden in denen das steht. Daher wohl auch die Französischen<br />
Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem<br />
Unterverzeichnis, so das sie nicht auswählbar sind.<br />
<br />
Um diese Dateien zu aktivieren:<br />
<br />
cd /usr/local/i18n<br />
mv NOTUSED/fr .<br />
<br />
Nun ist auch noch französisch als Sprache verfügbar.<br />
<br />
== Grafische Anpassungen ==<br />
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).<br />
<br />
Einige besonders interessante werden hier aufgeführt:<br />
<br />
=== Eigene Startup/Shutdown-Animation ===<br />
<br />
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in<br />
<br />
/usr/local/pics/qpe<br />
<br />
Die Links "splash.gif" und "goodbye.gif" zeigen auf die tasächlich zu verwendenen Dateien ("splash-chuck.gif", "goodby-chuck.gif").<br />
Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die<br />
splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte<br />
mit:<br />
<br />
rm /usr/local/pics/qpe/splash.gif<br />
<br />
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die<br />
eigene Datei:<br />
<br />
ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif<br />
<br />
Danach wird dann bei jedem Neustart die eigene Animation angezeigt.<br />
Analog hierzu mit der goodbye.gif.<br />
<br />
<br />
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet<br />
anmelden und:<br />
<br />
<c><br />
cd /usr/local/pics/qpe/<br />
wget http://dein.server/woauchimmer/Matrix5.gif<br />
rm /usr/local/pics/qpe/splash.gif<br />
ln -s Matrix5.gif splash.gif<br />
</c><br />
<br />
Die GIF Animation kann bis zu 176x220 Pixel groß sein.<br />
Kleinere (möglicherweise auch größere) Bilder werden zentriert.<br />
<gallery><br />
Bild:walking_baby_tux.gif<br />
Bild:custwakeup2.gif<br />
Bild:custgoodbye2.gif<br />
Bild:94vw4.gif<br />
Bild:1_Matrix--16984.gif<br />
Bild:1_Matrix--16985.gif<br />
Bild:3.gif<br />
Bild:ClanSpider2.gif<br />
Bild:TS12.gif<br />
Bild:Matrix5.gif<br />
Bild:qtopia3.gif<br />
Bild:qtopia0.gif<br />
</gallery><br />
<br />
=== Eigener Boot/Update-Screen ===<br />
<br />
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.<br />
/user_data/data/welcome.rgb565<br />
/usr/local/startup_V4.20/update.bin<br />
<br />
Weitere Beispielbilder:<br />
/user_data/prod/data/lcd_test_card1.bin<br />
/user_data/prod/data/lcd_test_card2.bin<br />
<br />
Diese werden direkt in den Framebuffer geschrieben.<br />
Daher müssen sich diese genau ein bestimmtes Format halten: <br />
* Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)<br />
* 16bit pro Pixel RGB565<br />
<br />
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:<br />
# Ein Bild in Gimp mit 176x220 erstellen<br />
# das Bild vertikal spiegeln<br />
# Bild->Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)<br />
# Datei->Kopie speichern...<br />
# Als Windowsbitmap -> erweiterete Optionen -> 16bit R5G6B5<br />
# BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)<br />
tail -c 105600 input.bmp > output.raw<br />
<br />
<br />
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.<br />
cat /user_data/prod/data/lcd_test_card1.bin > /dev/fb0<br />
<br />
== Wichtige Verzeichnisse ==<br />
<br />
=== Adressdaten ===<br />
<br />
# cat /user_data/home/Applications/addressbook/addressbook.xml <br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Addressbook ><AddressBook><br />
<Groups><br />
</Groups><br />
<Contacts><br />
<Contact<br />
Uid="-1269720893" <br />
Categories="-1269431263;-1266109093;-1266109094" <br />
FirstName="ich" <br />
FileAs="ich" <br />
JobTitle="cc" <br />
Department="dep"<br />
Company="aa" <br />
BusinessPhone="55" <br />
BusinessFax="77" <br />
BusinessMobile="66" <br />
HomePhone="55"<br />
HomeMobile="11" <br />
HomePc="12"<br />
HomeData="13"<br />
HomeFax="14"<br />
BusinessStreet="street"<br />
BusinessCity="city"<br />
BusinessState="state"<br />
BusinessZip="zip"<br />
BusinessCountry="country"<br />
BusinessPager="88"<br />
Office="office"<br />
Profession="prof"<br />
Assistant="ass"<br />
Manager="man"<br />
HomeStreet="ptjml"<br />
HomeCity="cit"<br />
HomeState="stat"<br />
HomeZip="zi"<br />
HomeCountry="coun"<br />
Spouse="spouse"<br />
Gender="1"<br />
Birthday="20100322"<br />
Anniversary="20100429"<br />
Children="child"<br />
Notes="gakm"<br />
CompanyPronunciation="bb"<br />
BUSINESS_CONTACT=""<br />
photofile="ci-1269721575-0.jpg"<br />
qdl-private-data=""<br />
tone="/usr/local/etc/SystemRingTones/16-Tetris.desktop"<br />
/><br />
<Contact Uid="-1269554029" <br />
FirstName="VoIP" <br />
LastName="Phone1" <br />
FileAs="VoIP Phone1" <br />
HomeMobile="**621" <br />
tone="/usr/local/etc/SystemRingTones/15-Techno2.desktop" /><br />
<Contact Uid="-1269554032" <br />
Categories="-1269431263"<br />
FirstName="VoIP" <br />
LastName="Phone3" <br />
FileAs="VoIP Phone3" <br />
HomeMobile="**623" <br />
BUSINESS_CONTACT="" <br />
qdl-private-data="" <br />
tone="/usr/local/etc/SystemRingTones/08-Celtrelax.desktop" /><br />
</Contacts><br />
</AddressBook><br />
<br />
UID ist wohl egal, solange sie nicht zweimal vorkommen.<br />
<br />
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben<br />
"maxEntries = 500" in der "Contacts.conf"<br />
<br />
Die Kategorien stehen in /user_settings/Categories.xml:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE CategoryList><br />
<Categories><br />
<Category id="-1269431263" name="_Personal" /><br />
<Category id="-1269431262" name="_Business" /><br />
</Categories><br />
<br />
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".<br />
<br />
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!<br />
<br />
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).<br />
<br />
=== Fotos & Videoschnappschüsse ===<br />
<br />
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:<br />
/user_data/home/Documents<br />
<br />
Die Bilder sind dabei nach folgendem Namensschema benannt:<br />
<br />
DD-MM-YYYY-hh:mm:ss.jpg<br />
<br />
Tag (DD) und Monat (MM) können auch einstellig sein.<br />
<br />
== Klingeltöne ==<br />
<br />
Die Klingeltöne liegen, wie oben beschrieben unter:<br />
<br />
/usr/local/etc/SystemRingTones/<br />
<br />
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich, z.B. mit MhWaveEdit (Linux/GTK) recht komfortabel erzeugen lassen.<br />
<br />
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird.<br />
Eine für den fiktiven 16. Klingelton erzeugte Datei "16-Tetris.desktop" könnte den folgenden Inhalt haben:<br />
<br />
[Desktop Entry]<br />
Categories =<br />
File =16-Tetris.wav<br />
Name[] =16-Tetris<br />
Type = audio/x-wav<br />
[Translation]<br />
File=QtopiaRingTones<br />
Context=16-Tetris<br />
<br />
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.<br />
<br />
<br />
=== Timeserver ===<br />
<br />
http://www.mikrocontroller.net/topic/170483#1645101<br />
Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg<br />
die Adressen der Zeitserver "ntp.xs4all.nl" und "130.142.110.71". Diese<br />
könnte man z.B. auf "ptbtime1.ptb.de" und "ptbtime2.ptb.de" ändern.<br />
<br />
(http://www.mikrocontroller.net/topic/170483#1649594)<br />
das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 -<br />
chronos.zedat.fu-berlin.de kann man als server nehmen.<br />
<br />
== Zusätzliche Software ==<br />
=== Dropbear (SSH-Server) installieren ===<br />
<br />
# Mit telnet auf dem Gerät einloggen<br />
# folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://vp6500.bd8.nl/bin/dropbear.tgz<br />
tar -xzf dropbear.tgz<br />
rm dropbear.tgz<br />
cd /etc/rc.d/init.d<br />
mv dropbear S90dropbear<br />
./S90dropbear start<br />
Kommando 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch<br />
gestartet wird.<br />
<br />
=== Nano 2.2.3 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /usr/bin<br />
wget http://www.mikrocontroller.net/attachment/74023/nano<br />
* Mit folgendem Befehl den Editor ausführbar machen:<br />
chmod +x /usr/bin/nano<br />
* Nun ist vi Geschichte ;-)<br />
<br />
=== OpenVPN 2.0.9 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74380/openvpn.tar.gz<br />
tar -xzf openvpn.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== OpenVPN 2.1.1 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74395/openvpn-2.1.1.tar.gz<br />
tar -xzf openvpn-2.1.1.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== Tinc 1.0.12 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74396/tinc-1.0.12.tar.gz<br />
tar -xzf tinc-1.0.12.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
= SIP Einstellungen =<br />
<br />
== Einstellung für 1und1 ==<br />
<br />
* SIP1:<br />
** Display Name: ...<br />
** Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Telephone Number: 0#VORWAHLOHNE0#NUMMER#<br />
* Auth:<br />
** Auth Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Password: *********<br />
* Server:<br />
** sip.1und1.de:5060<br />
* Proxy:<br />
** sip.1und1.de:5060<br />
* RTP:<br />
** 30000 und 30019<br />
* STUN:<br />
** stun.1und1.de<br />
* STUN Server Port:<br />
** 3478<br />
* SIP2:<br />
** UDP: 5060<br />
** TCP: 5060<br />
<br />
== Einstellung für Sipgate ==<br />
<br />
*SIP1<br />
**Display Name: Sipgate Username<br />
**User Name: your SIPgate-ID<br />
**Telephone Number: Sipgate-Telefonnummer<br />
*Auth<br />
**Authentification UserName: your SIPgate-ID<br />
**Password: Sipgate Passwort<br />
*Server<br />
**SIP register address:port: sipgate.de:5060<br />
*Proxy<br />
**SIP proxy1 address:port: sipgate.de:5060<br />
*SIP2<br />
**SIP Port Listen<br />
**for UDP: 5062<br />
**for TCP: 5062<br />
**for TCP TLS: 5053<br />
*STUN: [X] use rport<br />
<br />
SIP Outbound muss leer sein.<br />
<br />
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.<br />
<br />
== Einstellung für Ekiga.net ==<br />
<br />
*SIP1<br />
**Display Name: Irgendwas<br />
**User Name: username<br />
**Telephone Number: leer<br />
*Auth<br />
**Authentication User Name: username<br />
**Password: password<br />
*Server<br />
**SIP register: ekiga.net:5060<br />
**Protocol: ( ) TCP (*) UDP<br />
**Expire Timer: 3600<br />
**Keep Alive: 0<br />
*Proxy<br />
**alle leer<br />
*STUN<br />
**( ) use rport<br />
**STUN Server IP address: stun.ekiga.net<br />
**STUN Server port: 3478<br />
*SIP2<br />
**(*) Symmetric Mode<br />
**UDP: 5060<br />
**TCP: 5060<br />
**TCP TLS: 5061<br />
*OBproxy<br />
**alle leer<br />
<br />
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.<br><br />
Weitere features: https://www.ekiga.net/index.php?page=services<br><br />
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.<br> <br />
<p>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 <b>einen neuen Kontakt</b> (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 <b>[#]</b>-Taste des VP5500/6500 umschalten.</p><br />
<p>Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der <b>Video-Taste</b> auf der Tastatur des VP6500</p><br />
<br />
== Einstellung für Fritzbox 7170/7270 und andere mit SIP-Registrar ==<br />
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,<br> dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.<br> Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.<br><br />
<br><br />
Im Beispiel will die FB die Nummer 621 vergeben:<br><br />
'''Reiter SIP1'''<br><br />
Display Name: <leer lassen><br><br />
User Name: 621<br><br />
Telephone Number: 621<br><br />
<br><br />
'''Reiter Auth'''<br><br />
Authentication UserName: 621<br><br />
Password: [hier das gleiche, wie auf der FB eingeben]<br><br />
<br><br />
'''Reiter Server'''<br><br />
SIP register address:port<br><br />
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060<br><br />
Protocol: UDP<br><br />
ExpireTime: 3600<br><br />
Keep Alive: 300<br><br />
<br><br />
'''Anmerkungen dazu:'''<br><br />
Protokoll: UDP<br><br />
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.<br> <br />
Keep Alive: 300<br><br />
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen <br>wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so <br>aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.<br><br />
Anmeldung:<br><br />
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.<br> Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.<br><br />
<br />
Falls eure Fritz!Box keine Möglichkeit bietet, ein IP-Telefon anzumelden, empfehle ich euch mal in das http://wiki.ip-phone-forum.de/skript:speedport2fritz einzulesen.<br><br />
Bzw. mal im IP-Phone-Forum nach SIP-Registrar suchen.<br><br />
<br />
= Buildumgebung erstellen =<br />
<br />
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.<br />
<br />
== Windows ==<br />
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.<br />
<br />
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).<br />
<br />
=== Freetz-Linux ===<br />
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).<br />
Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.<br />
<br />
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus.<br />
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.<br />
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.<br />
<br />
Benutzername und alle Kennwörter sind 'freetz'<br />
<br />
==== Installation und Test der VP5500 Toolchain ====<br />
Installation der Buildumgebung:<br />
sudo mkdir /opt/VP5500<br />
sudo mkdir /opt/VP5500/toolchain<br />
cd /opt/VP5500/toolchain<br />
sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2<br />
sudo bunzip2 arm-linux-gcc-3.3.2.tar.bz2<br />
sudo tar -xf arm-linux-gcc-3.3.2.tar<br />
sudo rm arm-linux-gcc-3.3.2.tar<br />
sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm<br />
<br />
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.<br />
<br />
Test der Buildumgebung:<br />
cd ~<br />
wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz<br />
tar -xzf helloworld.tgz<br />
rm helloworld.tgz<br />
cd helloworld<br />
make<br />
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.<br />
<br />
==== Freetz-Linux eigentlicher Anwendungszweck ====<br />
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen.<br />
Folgende Schritte machen dies:<br />
cd ~<br />
svn checkout http://svn.freetz.org/trunk freetz-trunk <br />
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis 'freetz-trunk'.<br />
Konfigurieren mit 'make menuconfig' und Image erstellen mit 'make'.<br />
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.<br />
<br />
Für detailiertere Infos bitte direkt bei Freetz nachschlagen:<br />
http://trac.freetz.org/<br />
<br />
== Linux ==<br />
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.<br />
<br />
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.<br />
<br />
=== Hello World ===<br />
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.<br />
<br />
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von "make" compiliert.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung ===<br />
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).<br />
<br />
= Hardware + Software Versionen =<br />
<br />
Listet mal eure Hardware- und Softwareversion aus dem '''Applications''' => '''System Info''' Menü auf, wenn sie hier noch nicht stehen!<br />
<br />
== VP5500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|- <br />
| ind5 ||0645 || 4.20<br />
|- <br />
| ind5 ||0647 || 4.20<br />
|-<br />
| ind5 ||0648 || 4.20<br />
|-<br />
| ind5 ||0649 || 4.20<br />
|-<br />
| ind5 ||0702 || 4.20<br />
|}<br />
<br />
== VP6500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|-<br />
| ind3-v2 || 0711 || 3.22<br />
|-<br />
| ind3-v2 || 0713 || 3.22<br />
|- <br />
| ind3-v2 || 0716 || 3.22<br />
|}<br />
<br />
= Stromaufnahme =<br />
<br />
== VP5500 ==<br />
FIXME <br />
<br />
== VP6500 ==<br />
<br />
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 ein geringer Abfall über die Schottky-Diode einzurechnen ist). <br />
<br />
=== Messungen ===<br />
* Booten: bis zu 420mA<br />
* Einbuchen: ca. 400mA<br />
* mit abgeschaltetem Display, aber eingebucht und laufend (idle): ca. 80mA<br />
* mit angeschaltetem Display, eingebucht und idle: ca. 190mA<br />
* mit 100% Prozessor-Last (von serieller Konsole ausgeführt: "while true; do true; done"): ca. 60mA mehr als idle (Scheint aber auch größere Sprünge für andere CPU-Last zu geben)<br />
* im 'Deep Sleep' (wird ein paar Minuten nach Einschalten erreicht): <10mA (!), mit kurzen Wachphasen mit erheblichem Stromverbrauch (>100mA). Beachte: Die serielle Konsole ist in diesem Modus auch nicht mehr aktiv, das Telefon ist aber nicht abgestürzt (Tastendruck aktiviert die Konsole wieder).<br />
<br />
=== Ladegerät ===<br />
* Phone nicht in der Ladeschale: < 0.2W<br />
* Phone wird geladen: ca 4W</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&diff=45706PHILIPS VP5500 VoIP Telefon2010-04-05T08:00:53Z<p>Dl3daz: /* Das VPx500 'rooten' */</p>
<hr />
<div>= Verwandte Artikel =<br />
* Konfiguration: http://www.mikrocontroller.net/topic/170483#new<br />
* Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new<br />
* http://das-labor.org/wiki/VP5500<br />
* (Hack) http://spritesmods.com/?art=vpx500<br />
* http://vp6500.bd8.nl/<br />
<br />
= Features =<br />
* Kamera-Auflösung 640x480 Pixel<br />
* 30 Bilder pro Sekunde<br />
* Kamera um 240° drehbar<br />
* 5,6 cm (2,2") TFT-Display, 176x220 Pixel, 65000 Farben<br />
* Audio-/Video-Ausgang (4fach Klinke-Cinch, beim VP5500 2,5mm Klinke und beim VP6500 3,5mm Klinke)<br />
* integrierter Li-Ion Akku, 3,7 V-/1100 mAh<br />
* englische und niederländische Menüsprache<br />
* Software Qtopia Version 2.1.0<br />
* Maße (LxBxH): 134x49x24 mm.<br />
<br />
[[Datei:Philips_VP5500.jpg]]<br />
<br />
= Hardware =<br />
* MCU: Freescale MC9328MX21 (ARM9) @ 266MHz<br />
* PC-to-TV-Konverter-Chip: FS455LF<br />
* WLAN: Marvell 88w8385, als Modul von WM-G-MR-01 (VP5500) / Philips BGW211, on-board (VP6500)<br />
* SDRAM: 2 x K4S56163LF - 4M x 16Bit x 4 Banks<br />
* 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<br />
* Kamera: dc-4626.a5 by chicony<br />
* Display: Samsung LTS220QC (HD66772 Controller)<br />
<br />
== System-Takte ==<br />
# cat /proc/systclk<br />
System clocks state:<br />
Ref clock : 32768Hz (int, premult by 512)<br />
MPLL clock: 263999905Hz (computed: 264000000Hz)<br />
SPLL clock: 163840000Hz (computed: 163840000Hz)<br />
CPU clock : 263999905Hz (PERSC = 0)<br />
Bus clock : 132000000Hz (BCLKDIV = 1, computed: 131999952Hz)<br />
CSI clock : unknown (cannot read register CSICR1)<br />
USB clock : 20480000Hz (USB_DIV = 7)<br />
Wait State: CS0U[WSC] = 10, CS0U[WSC] = 48<br />
loops_per_jiffy = 665058<br />
<br />
= Innenleben =<br />
<gallery widths="240" ><br />
<br />
Datei:Oberseite.jpg | Ansicht der Oberseite<br />
Datei:Oberseite_beschriftet.jpg | Oberseite mit Beschriftung der Bauteile<br />
Datei:Drumherum.jpg | Übersicht über die Komponenten<br />
</gallery><br />
<br />
<gallery widths="240" ><br />
Datei:Kontakte_Oberseite.jpg | UART-Schnittstelle Oberseite<br />
Datei:Kontakte_Unterseite.jpg | JTAG-Schnittstelle Unterseite<br />
</gallery><br />
<br />
<br />
== Testpins ==<br />
Original Liste von [http://www.mikrocontroller.net/topic/170483#1646514 Tino] [[Media:Philips vp5500 Liste Testpins.pdf|herrunterladen]].<br />
<br />
[[Bild:Philips vp5500 testpins 1.jpg|thumb| Testpins auf der Rückseite]]<br />
[[Bild:Philips vp5500 testpins 2.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]<br />
<br />
{| class="wikitable"<br />
! Testpin Nr. !! verbunden zu !! Funktion<br />
|-<br />
| 1 || LED || unbekannt<br />
|-<br />
| 2 || Kamera Pin 8 an CN1 || unbekannt<br />
|-<br />
| 3 || Pin 4 an IC1 || unbekannt<br />
|-<br />
| 4 || z.B. IC5 Pin V 18 || VDDA<br />
|-<br />
| 5 || GND || GND<br />
|-<br />
| 6 || NC || NC<br />
|-<br />
| 7 || Pin E 16 an IC5 || SAP_CLK<br />
|-<br />
| 8 || Pin 1 an CN 3 || Lautsprecher<br />
|-<br />
| 9 || Pin 2 an CN 3 || Lautsprecher<br />
|-<br />
| 10 || Pin an CN 4 || ?<br />
|-<br />
| 11 || Pin an CN 4 || ?<br />
|-<br />
| 12 || Pin an CN 4 || ?<br />
|-<br />
| 13 || Pin L 16 an IC5 || UART2_TXD<br />
|-<br />
| 14 || Pin C 12 an IC5 || USBH1_RXDM<br />
|-<br />
| 15 || Pin H 12 an IC5 || USBH1_TXDP<br />
|-<br />
| 16 || Pin B 19 an IC5 || CSPI2_SS2<br />
|-<br />
| 17 || Pin B16 an IC5 || SSI2_FS<br />
|-<br />
| 18 || Pin F 18 an IC5 || KP_ROW0<br />
|-<br />
| 19 || Pin K 18 an IC5 || KP_COL4<br />
|-<br />
| 20 || Pin L 19 an IC5 || UART3_TXD<br />
|-<br />
| 21 || Pin T 14 an IC5 || RESET_IN<br />
|-<br />
| 22 || geht an + des Kondensators neben IC6 || unbekannt<br />
|-<br />
| 23 || Pin D 13 an IC 9 || CLKOUT<br />
|-<br />
| 24 || Pin E 13 an IC 9 || CLKIN_P<br />
|-<br />
| 25 || Pin A 9 an IC 9 || DAC_D<br />
|-<br />
| 26 || Pin A 8 an IC 9 || DAC_A<br />
|-<br />
| 27 || Pin A 7 an IC 9 || DAC_B<br />
|-<br />
| 28 || Pin A 6 an IC 9 || DAC_C<br />
|-<br />
| 29 || Pin L 13 an IC 5 || UART1_TXD<br />
|-<br />
| 30 || Pin T 16 an IC 5 || BOOT1<br />
|-<br />
| 31 || Pin K 10 an IC 5 || UART1_RXD<br />
|-<br />
| 32 || Pin U 17 an IC 5 || BOOT2<br />
|-<br />
| 33 || Pin 9 an IC 23 || unbekannt<br />
|-<br />
| 34 || Pin D 19 an IC5 || CSPI2_SCLK<br />
|-<br />
| 35 || Pin C 14 an IC5 || TIN<br />
|-<br />
| 36 || Pin C 19 an IC5 || CSPI2_SS1<br />
|-<br />
| 37 || Pin D 18 an IC5 || CSPI2_SS0<br />
|-<br />
| 38 || Pin E 19 an IC5 || CSPI2_MOSI<br />
|-<br />
| 39 || Pin H 19 an IC5 || PWMO<br />
|-<br />
| 40 || Pin J 9 an IC 7 und IC 8 || VDD<br />
|-<br />
| 41 || Pin J 19 an IC 5 || KP_COL2<br />
|-<br />
| 42 || Pin K 16 an IC 5 || KP_COL3<br />
|-<br />
| 43 || Pin J 11 an IC 5 || KP_ROW2<br />
|-<br />
|44 || Pin J 17 an IC 5 || KP_COL1<br />
|-<br />
|45 || Pin G 19 an IC 5 || KP_ROW4<br />
|-<br />
|46 || Pin G 17 an IC 5 || KP_ROW3<br />
|-<br />
|47 || Pin D 5 an IC 10 und IC 11 || ACC<br />
|-<br />
|48 || Pin G 16 an IC 5 || KP_ROW1<br />
|-<br />
|49 || Pin J 18 an IC 5 || KP_COL0<br />
|-<br />
|50 || Pin V 18 an IC 5 || VDDA<br />
|-<br />
|51 || Pin 2 an CN KB-Stecker || ?<br />
|-<br />
|52 || Pin 2 an IC 15 || ?<br />
|-<br />
|53 || Pin 4 am LCD Stecker || ?<br />
|-<br />
|54 || Pin E 17 an IC 5 || CSPI2_MISO<br />
|-<br />
|55 || Pin 1,2,3,10,13 am LCD Stecker || ?<br />
|-<br />
|56 || Pin 3 an IC 16 || ?<br />
|-<br />
|57 || Pin U 10 an IC 5 || PC_PWRON<br />
|-<br />
|58 || Pin 1 IC 18 || ?<br />
|-<br />
|59 || an Diode über IC 16 || ?<br />
|-<br />
|60 || Pin 3 an IC 25 || ?<br />
|-<br />
|61 || Ladekontakt positiv || Ladegerät +<br />
|-<br />
|62 || GND || GND<br />
|-<br />
|63 || Akku Mittelkontakt || Akkustand? Temperatur?<br />
|-<br />
|64 || Transistor unter IC 16 || ?<br />
|-<br />
|65 || Pin 2 an IC 22 || ?<br />
|-<br />
|66 || Pin 1,12,30 an IC 24 || VSS<br />
|-<br />
|67 || Kondensator + unter IC 20 || ?<br />
|-<br />
|68 || Pin 5 an IC 21 || ?<br />
|-<br />
|69 || Pin 2 an IC 4 || ?<br />
|-<br />
|70 || Pin 25 an IC24 || MCLK<br />
|-<br />
|71 || Prozessor Pin W 14 || QVDD<br />
|}<br />
<br />
== UART ==<br />
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren.<br />
Jedoch startet dann das Telefon nicht vollständig (Fix siehe [[#Betrieb mit aktiverter serieller Schnittstelle]])<br />
<br />
* Spannungs-Pegel: 3.3V<br />
* Baudrate: 115200kbps<br />
* Stopbits: 1<br />
* Flussteuerung: keine<br />
=== VP5500 ===<br />
[[Bild:VP5500_seriell_highlight.svg|100px|UART-Pins VP5500(Frontseite der Platine)]]<br />
<br />
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br />
<br />
=== VP6500 ===<br />
[[Bild:VP5600-Serialport-Preliminary.jpg|100px|UART-Pins VP6500]]<br />
<br />
Die serielle Schnittstelle ist unter vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br><br />
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.<br />
<br />
== JTAG ==<br />
[[Bild:jtag.jpg Belegung der JTAG-Pins (Rückseite der Platine)]]<br />
<br />
= Hardware Modifikationen =<br />
== Zerlegen des Telefons ==<br />
<gallery><br />
Datei:01_offen_von_Hinten.JPG|1. Geöffnetes Akkufach<br />
Datei:02_Blende_entfernt.JPG|2. hintere Schwarze Blende entfernt<br />
Datei:03_Rückseite_entfernt.JPG|3. Schalenrückteil entfernt<br />
Datei:04_aufhebeln_Vorderteil.JPG|4. Druck nach außen<br />
Datei:05_vorderteil_entfernt.JPG|5. entferntes Vorderteil<br />
Datei:06_Elektronik_entfernt.JPG|6. entfernte Elektronik<br />
</gallery><br />
<br />
# das Akkufach muss geöffnet und die Schrauben entfernt werden<br />
# hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen<br />
#* 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.<br />
# Nun kann einfach das rückseitige Schalenteil abgeschaubt werden<br />
# das Entfernen des Frontschalenteils ist etwas tricky:<br />
#* von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten<br />
#* etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.<br />
#* Mit 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 außen wirkt.<br />
#* Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritisch, wenn der Bügel ein wenig anbricht)<br />
# Die Platine zu entfernen ist nicht ganz so schwierig.<br />
#* Zuerst die Seite auf der keine Knöpfe sind:<br />
#* vorichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten <br />
#* dann versuchen die Paltine seitlich nach oben aus dem Gehäuse zu ziehen<br />
#* dabei auf das Lautsprecherkabel und den Kamerakonnektor achten<br />
# Zusammenbau genauso, nur umgedreht ;)<br />
#* nicht die Lautsprecher- und Kamera-Stecker vergessen<br />
<br />
== Buchse für Uart einbauen ==<br />
<gallery><br />
Datei:10_Pins.JPG|1. unbearbeitete Pinreihe<br />
Datei:11_Pins_bearbeitet.JPG|2. präperierte Pinreihe<br />
Datei:09_Pads.JPG|3. präperierte Pads<br />
Datei:12_Pins_ausrichten.JPG|4. Pinreiheausrichten<br />
Datei:13_Pins_angelötet_1.JPG|5. angelötete Pinreihe<br />
Datei:14_Pins_angelötet_2.JPG|6. angelötete Pinreihen<br />
Datei:08_Mittelteil.JPG|7. Mittelteil mit ausgefeiltem Loch<br />
Datei:15_Mittelteil_zusammengebaut.JPG|8. wieder zusammengesteckt<br />
Datei:16_in_Aktion.JPG|9.verbundene serielle Schnittstelle<br />
</gallery><br />
<br />
Zunächst muss das Telefon zerlegt werden ([[#Zerlegen des Telefons]])<br />
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. <br />
<br />
# Hierfür habe ich einreihige gedrehte IC-Sockel genutzt <br />
# deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)<br />
# ebendso auf die Pads ein wenig eingezinnt<br />
# ausrichten und festlöten<br />
# eine Reihe<br />
# die zweite Reihe<br />
# 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.<br />
# fertig<br />
# und im Einsatz<br />
<br />
= Das VPx500 'rooten' =<br />
<br />
Um Zugang zu den Dateien auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten<br />
<br />
# serielle Schnittstelle<br />
<br />
Dazu muß der [[UART]] angeschlossen werden. Während des Bootvorgangs drückt man immer wieder ziellos irgendwelche Tasten bis man am Prompt des Bootloaders ist.<br />
<br />
Dann kann man <br />
<br />
boot root=/dev/mtdblock2 init=/bin/sh<br />
<br />
eingeben, um an eine Shell zu kommen.<br />
<br />
# telnet<br />
<br />
telnet ist der komfortablere Weg. Um telnet zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf den Updateserver von KPN zuzugreifen (den es nicht mehr gibt). Glücklicherweise geschieht dies nicht über eine feste IP, sondern über einen Hostnamen, so dass man an dieser Stelle sich durch einen eigenen DNS den Domainname auf einen eigenen Server umleiten kann. Daher ist im eignenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte 'Static DNS', ..).<br />
Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.<br />
<br />
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:<br />
<br />
telnet 123.456.789.012<br />
# <br />
<br />
Passwort ist "toor".<br />
Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.<br />
<br />
Unter Applications>Registration sind Netzwerk- und VoIP-Einstellungen zu finden.<br />
<br />
== Anleitung für Fritz-Box-Benutzer ==<br />
Die Fritzboxen bieten bisher leider keine Möglichkeit, den verwendeten DNS<br />
direkt im Webinterface zu ändern, über Umwege geht es aber doch:<br />
* Über das Webinterface der Fritzbox die Einstellungen sichern<br />
* Exportdatei im Texteditor öffnen (am besten nicht Notepad, da der die Unix-Zeilenumbrüche nicht versteht - zur Not geht auch Wordpad)<br />
* nach overwrite_dns1 suchen (gibt es zwei mal) und da den DNS 84.38.68.30 oder 188.40.123.50 eintragen<br />
* am Anfang der Exportdatei VOR "**** CFGFILE:ar7.cfg" eine Zeile 'NoChecks = yes' einfügen, damit die Fritzbox die nun nicht mehr passende Checksumme ignoriert.<br />
* Einstellungen zurück in die Fritzbox übertragen.<br />
<br />
Wenn die Telefone entsperrt sind, den DNS wieder entfernen (Es ist<br />
vielleicht eine ganz gute Idee, wenn man da zwei unabhängige DNS-Server<br />
einträgt, so umgeht man auch gleich providerseitige DNS-Sperren)<br />
<br />
= Voice over IP (VoIP, SIP) =<br />
<br />
*http://de.wikipedia.org/wiki/IP-Telefonie<br />
*http://de.wikipedia.org/wiki/Session_Initiation_Protocol<br />
*http://de.wikipedia.org/wiki/H.323<br />
*http://de.wikipedia.org/wiki/Softphone<br />
<br />
Benutzer ist 103<br />
<br />
Mit Ekiga konnte so per 103@xxx.xxx.xxx.xxx eine Sprachverbindung zum Telefon aufgebaut werden.<br />
<br />
= Software Modifikationen =<br />
== Vorsicht Fallen ==<br />
Es ist nicht schwer, sich den Zugang zum Telefon abzuschneiden, wenn man nicht aufpasst.<br />
=== Startscripten ===<br />
Die Scripten in /etc/rc.d/" müssen im Hintergrund laufen. Tut ein Script das nicht, ist an dieser Stelle Schluß mit dem Bootvorgang.<br />
<br />
Dann darf man als nächstes den Lötkolben anheizen und die serielle Schnittstelle ([[UART]]) zugänglich machen.<br />
<br />
== Grundlagen ==<br />
Bestimmte Aktionen werden immer wieder benötigt.<br />
Diese sollen hier kurz beschrieben werden.<br />
<br />
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.<br />
<br />
=== Dateien bearbeiten mit vi===<br />
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können.<br />
Für eine genaue Bedienung bitte Google benutzen.<br />
Die wichtigsten Bedienelemente werden hier kurz erläutert.<br />
<br />
Datei Öffnen mit 'vi Dateipfad'<br />
vi kennt zwei Modi: Kommando- und Einfüge-Modus.<br />
i - wechselt in den Einfüge-Modus, in dem geschrieben werden kann<br />
<br />
[Esc] wechselt zurück in den Kommandomodus. <br />
In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.<br />
:x - löscht das Zeichen an Cursor position<br />
:dd - löscht die ganze zeile<br />
:<nowiki>:</nowiki>q! - schließt ohne zu speichern<br />
:<nowiki>:</nowiki>w - speichert<br />
:<nowiki>:</nowiki>wq - speichert und beenden<br />
<br />
=== Dateien auf das Telefon laden ===<br />
Um Daten von einem http-Server zu laden, benutzt man <br />
wget url<br />
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.<br />
<br />
Um Daten von einem ftp-Server zu laden, benutzt man ftp.<br />
Auch hier muss vorher in das zielverzeichnis gewechselt werden.<br />
ftp hostname<br />
dann gegebenenfalls die Zugangsdaten eingeben und mittels 'cd' und 'ls' in das Entsprechende Verzeichnis auf dem FTP-Server wechseln<br />
und anschließend mittels <br />
get dateiname<br />
die Datei herunterladen.<br />
<br />
=== Dateien vom Telefon herunterladen ===<br />
Auch hier bietet sich ein FTP an.<br />
Mittels 'ftp hostname' verbinden, Benutzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels<br />
put localeDatei<br />
eine Lokale Datei hochladen.<br />
<br />
=== Alternative Dropbear ===<br />
<br />
Wurde der dropbear-ssh server installiert [[#Dropbear (SSH-Server) installieren]] können mittels eines Programms mit SCP-Unterstützung (zB. [http://winscp.net/eng/docs/lang:de WinSCP] für Windows) sehr komfortabel Dateien ausgetauscht werden.<br />
<br />
Mit WinSCP können auch Dateien direkt bearbeitet werden.<br />
Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.<br />
<br />
== Backup ==<br />
=== Backup des Flash ===<br />
If you want to make a backup of your root partition, you can do as<br />
follows:<br />
<br />
<c><br />
echo '#!/bin/sh' > /tmp/backup.sh<br />
echo 'cat /dev/mtdb2 2>/dev/null' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
micro_inetd 31337 /tmp/backup.sh<br />
</c><br />
<br />
This'll make your device listen for incoming connections on port 31337.<br />
On your host system you may then simply run <br />
nc ip.of.your.phone 31337 > fon_rootfs<br />
et voilà, you got your rootfs packed into a file.<br />
<br />
Note that the backed up file is not ext2, but a jffs2 formatted<br />
filesystem. These can't be handled by a simple "mount -o loop" as you'd<br />
have thought... so here's how you mount it:<br />
<br />
<c><br />
modprobe jffs2<br />
modprobe mtdram total_size=32768 erase_size=128<br />
modprobe mtdblock<br />
mkdir /tmp/phone-root<br />
mknod /tmp/phone-mtdb2 b 31 0<br />
dd if=/your/backup/file of=/tmp/phone-mtdb2<br />
mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root<br />
</c><br />
<br />
[[#Dateisystem herunterladen]] describes another way to dump the filesystem for closer examination.<br />
<br />
=== Komplettes Backup ===<br />
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.<br />
<br />
cd /etc/rc.d/init.d<br />
wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe<br />
chmod +x /etc/rc.d/init.d/S91backup_pipe<br />
<br />
Damit wird eine Art Backup-Server mit dem Boot gestartet.<br />
wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.<br />
<br />
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:<br />
<br />
nc 192.168.1.3 31337 > fon_rootfs<br />
nc 192.168.1.3 31338 > fon_udata<br />
nc 192.168.1.3 31339 > fon_usettings<br />
nc 192.168.1.3 31340 > fon_bootld<br />
nc 192.168.1.3 31341 > fon_kernel<br />
<br />
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_*<br />
Dateinamen könnt ihr natürlich auch frei vergeben.<br />
<br />
fon_udata ist die /user_data Partition, fon_usertings dementsprechend<br />
die /user_settings Partition.<br />
<br />
Der bootld Bereich enthält auch die Parameter. Um das später (falls<br />
überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in<br />
zwei Teile aufgeteilt werden. Der erste enthält dann den reinen<br />
Bootloader-Bereich, der zweite die Parameter. Wer's wirklich braucht für<br />
den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll<br />
ist das aber nicht, hat man den Bootloader erstmal mit was anderem<br />
überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen<br />
benutzen....<br />
<br />
=== Zurückspielen der Backups ===<br />
<br />
1) Man braucht ein (die) Backup-Image(s).<br />
<br />
2) Serielle Verbindung zum Telefon<br />
<br />
3) Akku abstecken, wieder anstecken.<br />
<br />
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so<br />
das man im Bootloader landet. Dabei muss man recht schnell sein. Es<br />
sollte dann ein Prompt kommen:<br />
<br />
<c><br />
blob><br />
</c><br />
<br />
5) Nun gibt man ein <br />
xdownload param<br />
Wobei 'param' der Teil ist, den man wiederherstellen will:<br />
* blob - Bootloader (fon_bootld)<br />
* param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)<br />
* kernel - Der Kernel (fon_kernel)<br />
* ramdisk - Das Root-Filesystem / (fon_rootfs)<br />
* ramdisk2 - Das /user_data Filesystem (fon_udata)<br />
* ramdisk3 - Das /user_settings Filesystem (fon_usettings)<br />
<br />
Beim Backup ist blob + param in einer Datei, müsste man also ggf.<br />
erstmal aufsplitten.<br />
<br />
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den<br />
Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.<br />
<br />
7) Kaffee trinken, auf's Klo gehen, mit Frau/Freundin/Mutter ein Gespräch<br />
anfangen.<br />
<br />
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet<br />
wieder am "blob>" prompt. Nun gibt man<br />
flash param<br />
ein.<br />
<br />
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.<br />
<br />
10) "boot" eingeben. Da Telefon bootet nun normal.<br />
<br />
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das<br />
Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt<br />
man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle<br />
abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten<br />
(Akku kurz ab- und wieder anstöpseln)<br />
<br />
=== Dateisystem herunterladen ===<br />
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.<br />
<br />
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:<br />
<br />
<c><br />
echo '#! /bin/sh' > /tmp/backup.sh<br />
echo 'cd /' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
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<br />
micro_inetd 31340 /tmp/backup.sh<br />
</c><br />
<br />
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.<br />
<br />
Auf einem anderen Linux system (oder cygwin) kann mittels<br />
<c><br />
nc telefon-Ip 31340 > file.tar<br />
</c><br />
die Datei abgerufen werden.<br />
<br />
Der Vorgang dauert aber ein ganz paar Minuten.<br />
<br />
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.<br />
<br />
== Betrieb mit aktiverter serieller Schnittstelle ==<br />
<br />
Das 5500 scheint nicht komplett zu starten wenn man TIN auf low hat<br />
und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei<br />
<br />
/usr/local/startup/daemon.sh<br />
<br />
ziemlich am Anfang das TINDETECT="TRUE" ändert auf TINDETECT="FALSE"<br />
<br />
Danach startet er auch mit aktiver serieller Verbindung komplett durch<br />
und das Gerät ist ganz normal bedienbar.<br />
<br />
<br />
<br />
== Aktivierung WPA2 Unterstützung ==<br />
<p>Standardmäßig kann das Telefon nur WPA, dabei unterstützt es allerdings auch <b>WPA mit AES</b> Verschlüsselung.</p><br />
<p>Es gibt zwei verschiedene Tricks mit denen auch WPA2 aktiviert werden kann.<br />
Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).</p><br />
<br />
=== Trick1 ===<br />
Mittels<br />
vi /etc/marvell/wpa_supplicant.conf<br />
den Texteditor starten.<br />
Mit PageDown (Bild runter) bis zum Ende des Files gehen.<br />
Die Zeilen <br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
auskommentieren, indem ein # vorangestellt wird:<br />
* cursor auf Beginn einer Zeile <br />
* i drücken zum Einfügen<br />
* # eintippen<br />
* [Esc]<br />
Sind alle Zeilen auskommentiert, dann mittels<br />
:wq[enter]<br />
abspeichern und Editor verlassen.<br />
<br />
Danach neu booten.<br />
<br />
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)<br />
<br />
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.<br />
<br />
Wichtige Info von airmack via IRC:<br />
<br />
'''Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf <u>hinten anzuhängen</u>, niemals aber vorne einzufügen!'''<br />
<br />
=== Trick2 ===<br />
Dieser Trick funktioniert mit Accesspoints, bei denen man auch WPA Verbindungen mit AES verschlüsseln kann. Vorteil dieses Tricks ist, dass man die wpa_supplicant.conf nicht manuell editieren muss. Allerdings unterstützt nicht jeder Accesspoint WPA mit AES (aber dd-wrt kann das).<br />
<br />
Man konfiguriert den Accesspoint zunächst mit WPA PSK und wählt AES als Verschlüsselungsalgorithmus. Jetzt meldet man das Telefon an, das Telefon erkennt richtig, dass eine WPA Verbindung vorliegt und verbindet sich per WPA und AES mit dem Accesspoint. Anschliessend konfiguriert man den Accesspoint von WPA PSK AES nach WPA2 PSK AES. Jetzt schaltet man das VP5500/6500 aus und wieder ein. Nachdem es fertig gebootet hat, verbindet es sich automisch per WPA2 PSK und mit AES Verschlüsselung. Fertig.<br />
<br />
== Menüs ==<br />
=== Hauptmenu ===<br />
<br />
Das File <br />
/usr/local/etc/defaultbuttons.conf<br />
enthält unter anderm die definition des Hauptmenus.<br />
<br />
Hierfür ist der Abschnitt Menu besonders interessant.<br />
[Menu]<br />
1 = Applications/camera.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications<br />
4 = Settings<br />
5 = Applications/addressbook.desktop<br />
6 = Settings/RingProfiles.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 2<br />
<br />
'Rows' und 'Columns' geben an, wieviel Reihen und Spalten das Hauptmenu hat.<br />
Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen.<br />
Die Menupunkte sind definiert in den Verzeichnissen unter <br />
/usr/local/apps<br />
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist.<br />
direkte Menupunkte haben Dateinamen mit der Endung .desktop<br />
'Default' bestimmten vorselektierten Eintrag.<br />
<br />
Hier ein weiteres Beispiel für ein angepasstes Menu:<br />
[Menu]<br />
1 = Applications/addressbook.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications/sysinfo.desktop<br />
4 = Applications<br />
5 = Settings<br />
6 = Games<br />
7 = Applications/camera.desktop<br />
8 = Applications/photoedit.desktop<br />
9 = Applications/manualsub.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 3<br />
<br />
Der Ordner Games ist (momentan ;) leer.<br />
<br />
=== Genereller Aufbau Menü-Einträge===<br />
Die Einträge für die Menüs sind im Filesystem abgelegt:<br />
<br />
* Settings: /usr/local/apps/Settings<br />
* Applications: /usr/local/apps/Applications<br />
* Klingeltöne: /usr/local/etc/SystemRingTones/<br />
<br />
Die Dateien haben die Endung ".desktop" und sind normale Textdateien, die die relevanten Infos enthalten.<br />
<br />
Ein Beispiel aus dem Settingsordner:<br />
[Translation]<br />
File=QtopiaSettings<br />
Context=Sound<br />
[Desktop Entry]<br />
Type=Application<br />
Exec=sound<br />
Icon=Sound<br />
Name[]=Sound<br />
CanFastload=0<br />
<br />
Der Abschnitt 'Translation' gibt an in welchem File, die Lokalisationsdaten stehen.<br />
<br />
Der Abschnitt 'Desktop Entry':<br />
* Type: Typ des Eintrages <br />
** Application für Anwendungen<br />
** audio/x-wav für Klingeltöne<br />
* Exec: Anwendung, die ausgeführt werden soll<br />
* Icon: Icon, das im Menü benutzt wird. <br />
** Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png<br />
** manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png<br />
* 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<br />
<br />
Hier ein Textfile mit allen desktop-Files als Referenz: [[File:alleDesktopFiles.txt]]<br />
<br />
=== Versteckte Menüeinträge ===<br />
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung '.desktopMASK'.<br />
Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschalten.<br />
<br />
folgendes an der Kommandozeile eingeben:<br />
cd /usr/local/apps/Settings<br />
mv datetime.desktopMASK datetime.desktop<br />
mv callforward.desktopMASK callforward.desktop<br />
mv calloptions.desktopMASK calloptions.desktop<br />
mv resetparam.desktopMASK resetparam.desktop<br />
mv subkpncode.desktopMASK subkpncode.desktop<br />
<br />
Dies aktiviert folgende Optionen:<br />
* Datums/Zeit-Einstellung<br />
* Anrufweiterleitung<br />
* Anrufoptionen<br />
* Parameter zurücksetzen<br />
* Number Switch<br />
<br />
<br />
Die nützlichsten sind wohl die ersten Einträge.<br />
Bei dem "Number Switch" ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.<br />
<br />
<br />
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine [[File:demomode.desktop]] anlegen.<br />
<br />
Hierfür ist folgende Prozedur nötig:<br />
* im Terminal<br />
cd /usr/local/apps/Applications<br />
vi demomode.desktop<br />
<br />
* i drücken <br />
* folgendes Textfragment einfügen <br />
[Translation]<br />
File=QtopiaApplications<br />
Context=DemoMode<br />
[Desktop Entry]<br />
Exec=demomode<br />
Icon=Camera<br />
Type=Application<br />
Name[]=DemoMode<br />
* [Esc] <br />
* :wq [Enter] <br />
<br />
Dies schaltet einen Demo-Modus frei.<br />
<br />
=== Französisch ===<br />
Es gab die Geräte wohl auch in Frankreich von der France Telekom.<br />
Zumindest sind entsprechende monitor und upgrade Referenz-Dateien<br />
vorhanden in denen das steht. Daher wohl auch die Französischen<br />
Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem<br />
Unterverzeichnis, so das sie nicht auswählbar sind.<br />
<br />
Um diese Dateien zu aktivieren:<br />
<br />
cd /usr/local/i18n<br />
mv NOTUSED/fr .<br />
<br />
Nun ist auch noch französisch als Sprache verfügbar.<br />
<br />
== Grafische Anpassungen ==<br />
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).<br />
<br />
Einige besonders interessante werden hier aufgeführt:<br />
<br />
=== Eigene Startup/Shutdown-Animation ===<br />
<br />
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in<br />
<br />
/usr/local/pics/qpe<br />
<br />
Die Links "splash.gif" und "goodbye.gif" zeigen auf die tasächlich zu verwendenen Dateien ("splash-chuck.gif", "goodby-chuck.gif").<br />
Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die<br />
splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte<br />
mit:<br />
<br />
rm /usr/local/pics/qpe/splash.gif<br />
<br />
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die<br />
eigene Datei:<br />
<br />
ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif<br />
<br />
Danach wird dann bei jedem Neustart die eigene Animation angezeigt.<br />
Analog hierzu mit der goodbye.gif.<br />
<br />
<br />
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet<br />
anmelden und:<br />
<br />
<c><br />
cd /usr/local/pics/qpe/<br />
wget http://dein.server/woauchimmer/Matrix5.gif<br />
rm /usr/local/pics/qpe/splash.gif<br />
ln -s Matrix5.gif splash.gif<br />
</c><br />
<br />
Die GIF Animation kann bis zu 176x220 Pixel groß sein.<br />
Kleinere (möglicherweise auch größere) Bilder werden zentriert.<br />
<gallery><br />
Bild:walking_baby_tux.gif<br />
Bild:custwakeup2.gif<br />
Bild:custgoodbye2.gif<br />
Bild:94vw4.gif<br />
Bild:1_Matrix--16984.gif<br />
Bild:1_Matrix--16985.gif<br />
Bild:3.gif<br />
Bild:ClanSpider2.gif<br />
Bild:TS12.gif<br />
Bild:Matrix5.gif<br />
Bild:qtopia3.gif<br />
Bild:qtopia0.gif<br />
</gallery><br />
<br />
=== Eigener Boot/Update-Screen ===<br />
<br />
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.<br />
/user_data/data/welcome.rgb565<br />
/usr/local/startup_V4.20/update.bin<br />
<br />
Weitere Beispielbilder:<br />
/user_data/prod/data/lcd_test_card1.bin<br />
/user_data/prod/data/lcd_test_card2.bin<br />
<br />
Diese werden direkt in den Framebuffer geschrieben.<br />
Daher müssen sich diese genau ein bestimmtes Format halten: <br />
* Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)<br />
* 16bit pro Pixel RGB565<br />
<br />
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:<br />
# Ein Bild in Gimp mit 176x220 erstellen<br />
# das Bild vertikal spiegeln<br />
# Bild->Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)<br />
# Datei->Kopie speichern...<br />
# Als Windowsbitmap -> erweiterete Optionen -> 16bit R5G6B5<br />
# BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)<br />
tail -c 105600 input.bmp > output.raw<br />
<br />
<br />
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.<br />
cat /user_data/prod/data/lcd_test_card1.bin > /dev/fb0<br />
<br />
== Wichtige Verzeichnisse ==<br />
<br />
=== Adressdaten ===<br />
<br />
# cat /user_data/home/Applications/addressbook/addressbook.xml <br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Addressbook ><AddressBook><br />
<Groups><br />
</Groups><br />
<Contacts><br />
<Contact<br />
Uid="-1269720893" <br />
Categories="-1269431263;-1266109093;-1266109094" <br />
FirstName="ich" <br />
FileAs="ich" <br />
JobTitle="cc" <br />
Department="dep"<br />
Company="aa" <br />
BusinessPhone="55" <br />
BusinessFax="77" <br />
BusinessMobile="66" <br />
HomePhone="55"<br />
HomeMobile="11" <br />
HomePc="12"<br />
HomeData="13"<br />
HomeFax="14"<br />
BusinessStreet="street"<br />
BusinessCity="city"<br />
BusinessState="state"<br />
BusinessZip="zip"<br />
BusinessCountry="country"<br />
BusinessPager="88"<br />
Office="office"<br />
Profession="prof"<br />
Assistant="ass"<br />
Manager="man"<br />
HomeStreet="ptjml"<br />
HomeCity="cit"<br />
HomeState="stat"<br />
HomeZip="zi"<br />
HomeCountry="coun"<br />
Spouse="spouse"<br />
Gender="1"<br />
Birthday="20100322"<br />
Anniversary="20100429"<br />
Children="child"<br />
Notes="gakm"<br />
CompanyPronunciation="bb"<br />
BUSINESS_CONTACT=""<br />
photofile="ci-1269721575-0.jpg"<br />
qdl-private-data=""<br />
tone="/usr/local/etc/SystemRingTones/16-Tetris.desktop"<br />
/><br />
<Contact Uid="-1269554029" <br />
FirstName="VoIP" <br />
LastName="Phone1" <br />
FileAs="VoIP Phone1" <br />
HomeMobile="**621" <br />
tone="/usr/local/etc/SystemRingTones/15-Techno2.desktop" /><br />
<Contact Uid="-1269554032" <br />
Categories="-1269431263"<br />
FirstName="VoIP" <br />
LastName="Phone3" <br />
FileAs="VoIP Phone3" <br />
HomeMobile="**623" <br />
BUSINESS_CONTACT="" <br />
qdl-private-data="" <br />
tone="/usr/local/etc/SystemRingTones/08-Celtrelax.desktop" /><br />
</Contacts><br />
</AddressBook><br />
<br />
UID ist wohl egal, solange sie nicht zweimal vorkommen.<br />
<br />
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben<br />
"maxEntries = 500" in der "Contacts.conf"<br />
<br />
Die Kategorien stehen in /user_settings/Categories.xml:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE CategoryList><br />
<Categories><br />
<Category id="-1269431263" name="_Personal" /><br />
<Category id="-1269431262" name="_Business" /><br />
</Categories><br />
<br />
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".<br />
<br />
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!<br />
<br />
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).<br />
<br />
=== Fotos & Videoschnappschüsse ===<br />
<br />
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:<br />
/user_data/home/Documents<br />
<br />
Die Bilder sind dabei nach folgendem Namensschema benannt:<br />
<br />
DD-MM-YYYY-hh:mm:ss.jpg<br />
<br />
Tag (DD) und Monat (MM) können auch einstellig sein.<br />
<br />
== Klingeltöne ==<br />
<br />
Die Klingeltöne liegen, wie oben beschrieben unter:<br />
<br />
/usr/local/etc/SystemRingTones/<br />
<br />
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich, z.B. mit MhWaveEdit (Linux/GTK) recht komfortabel erzeugen lassen.<br />
<br />
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird.<br />
Eine für den fiktiven 16. Klingelton erzeugte Datei "16-Tetris.desktop" könnte den folgenden Inhalt haben:<br />
<br />
[Desktop Entry]<br />
Categories =<br />
File =16-Tetris.wav<br />
Name[] =16-Tetris<br />
Type = audio/x-wav<br />
[Translation]<br />
File=QtopiaRingTones<br />
Context=16-Tetris<br />
<br />
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.<br />
<br />
<br />
=== Timeserver ===<br />
<br />
http://www.mikrocontroller.net/topic/170483#1645101<br />
Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg<br />
die Adressen der Zeitserver "ntp.xs4all.nl" und "130.142.110.71". Diese<br />
könnte man z.B. auf "ptbtime1.ptb.de" und "ptbtime2.ptb.de" ändern.<br />
<br />
(http://www.mikrocontroller.net/topic/170483#1649594)<br />
das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 -<br />
chronos.zedat.fu-berlin.de kann man als server nehmen.<br />
<br />
== Zusätzliche Software ==<br />
=== Dropbear (SSH-Server) installieren ===<br />
<br />
# Mit telnet auf dem Gerät einloggen<br />
# folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://vp6500.bd8.nl/bin/dropbear.tgz<br />
tar -xzf dropbear.tgz<br />
rm dropbear.tgz<br />
cd /etc/rc.d/init.d<br />
mv dropbear S90dropbear<br />
./S90dropbear start<br />
Kommando 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch<br />
gestartet wird.<br />
<br />
=== Nano 2.2.3 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /usr/bin<br />
wget http://www.mikrocontroller.net/attachment/74023/nano<br />
* Mit folgendem Befehl den Editor ausführbar machen:<br />
chmod +x /usr/bin/nano<br />
* Nun ist vi Geschichte ;-)<br />
<br />
=== OpenVPN 2.0.9 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74380/openvpn.tar.gz<br />
tar -xzf openvpn.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== OpenVPN 2.1.1 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74395/openvpn-2.1.1.tar.gz<br />
tar -xzf openvpn-2.1.1.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== Tinc 1.0.12 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74396/tinc-1.0.12.tar.gz<br />
tar -xzf tinc-1.0.12.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
= SIP Einstellungen =<br />
<br />
== Einstellung für 1und1 ==<br />
<br />
* SIP1:<br />
** Display Name: ...<br />
** Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Telephone Number: 0#VORWAHLOHNE0#NUMMER#<br />
* Auth:<br />
** Auth Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Password: *********<br />
* Server:<br />
** sip.1und1.de:5060<br />
* Proxy:<br />
** sip.1und1.de:5060<br />
* RTP:<br />
** 30000 und 30019<br />
* STUN:<br />
** stun.1und1.de<br />
* STUN Server Port:<br />
** 3478<br />
* SIP2:<br />
** UDP: 5060<br />
** TCP: 5060<br />
<br />
== Einstellung für Sipgate ==<br />
<br />
*SIP1<br />
**Display Name: Sipgate Username<br />
**User Name: your SIPgate-ID<br />
**Telephone Number: Sipgate-Telefonnummer<br />
*Auth<br />
**Authentification UserName: your SIPgate-ID<br />
**Password: Sipgate Passwort<br />
*Server<br />
**SIP register address:port: sipgate.de:5060<br />
*Proxy<br />
**SIP proxy1 address:port: sipgate.de:5060<br />
*SIP2<br />
**SIP Port Listen<br />
**for UDP: 5062<br />
**for TCP: 5062<br />
**for TCP TLS: 5053<br />
*STUN: [X] use rport<br />
<br />
SIP Outbound muss leer sein.<br />
<br />
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.<br />
<br />
== Einstellung für Ekiga.net ==<br />
<br />
*SIP1<br />
**Display Name: Irgendwas<br />
**User Name: username<br />
**Telephone Number: leer<br />
*Auth<br />
**Authentication User Name: username<br />
**Password: password<br />
*Server<br />
**SIP register: ekiga.net:5060<br />
**Protocol: ( ) TCP (*) UDP<br />
**Expire Timer: 3600<br />
**Keep Alive: 0<br />
*Proxy<br />
**alle leer<br />
*STUN<br />
**( ) use rport<br />
**STUN Server IP address: stun.ekiga.net<br />
**STUN Server port: 3478<br />
*SIP2<br />
**(*) Symmetric Mode<br />
**UDP: 5060<br />
**TCP: 5060<br />
**TCP TLS: 5061<br />
*OBproxy<br />
**alle leer<br />
<br />
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.<br><br />
Weitere features: https://www.ekiga.net/index.php?page=services<br><br />
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.<br> <br />
<p>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 <b>einen neuen Kontakt</b> (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 <b>[#]</b>-Taste des VP5500/6500 umschalten.</p><br />
<p>Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der <b>Video-Taste</b> auf der Tastatur des VP6500</p><br />
<br />
== Einstellung für Fritzbox 7170/7270 und andere mit SIP-Registrar ==<br />
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,<br> dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.<br> Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.<br><br />
<br><br />
Im Beispiel will die FB die Nummer 621 vergeben:<br><br />
'''Reiter SIP1'''<br><br />
Display Name: <leer lassen><br><br />
User Name: 621<br><br />
Telephone Number: 621<br><br />
<br><br />
'''Reiter Auth'''<br><br />
Authentication UserName: 621<br><br />
Password: [hier das gleiche, wie auf der FB eingeben]<br><br />
<br><br />
'''Reiter Server'''<br><br />
SIP register address:port<br><br />
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060<br><br />
Protocol: UDP<br><br />
ExpireTime: 3600<br><br />
Keep Alive: 300<br><br />
<br><br />
'''Anmerkungen dazu:'''<br><br />
Protokoll: UDP<br><br />
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.<br> <br />
Keep Alive: 300<br><br />
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen <br>wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so <br>aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.<br><br />
Anmeldung:<br><br />
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.<br> Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.<br><br />
<br />
Falls eure Fritz!Box keine Möglichkeit bietet, ein IP-Telefon anzumelden, empfehle ich euch mal in das http://wiki.ip-phone-forum.de/skript:speedport2fritz einzulesen.<br><br />
Bzw. mal im IP-Phone-Forum nach SIP-Registrar suchen.<br><br />
<br />
= Buildumgebung erstellen =<br />
<br />
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.<br />
<br />
== Windows ==<br />
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.<br />
<br />
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).<br />
<br />
=== Freetz-Linux ===<br />
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).<br />
Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.<br />
<br />
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus.<br />
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.<br />
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.<br />
<br />
Benutzername und alle Kennwörter sind 'freetz'<br />
<br />
==== Installation und Test der VP5500 Toolchain ====<br />
Installation der Buildumgebung:<br />
sudo mkdir /opt/VP5500<br />
sudo mkdir /opt/VP5500/toolchain<br />
cd /opt/VP5500/toolchain<br />
sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2<br />
sudo bunzip2 arm-linux-gcc-3.3.2.tar.bz2<br />
sudo tar -xf arm-linux-gcc-3.3.2.tar<br />
sudo rm arm-linux-gcc-3.3.2.tar<br />
sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm<br />
<br />
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.<br />
<br />
Test der Buildumgebung:<br />
cd ~<br />
wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz<br />
tar -xzf helloworld.tgz<br />
rm helloworld.tgz<br />
cd helloworld<br />
make<br />
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.<br />
<br />
==== Freetz-Linux eigentlicher Anwendungszweck ====<br />
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen.<br />
Folgende Schritte machen dies:<br />
cd ~<br />
svn checkout http://svn.freetz.org/trunk freetz-trunk <br />
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis 'freetz-trunk'.<br />
Konfigurieren mit 'make menuconfig' und Image erstellen mit 'make'.<br />
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.<br />
<br />
Für detailiertere Infos bitte direkt bei Freetz nachschlagen:<br />
http://trac.freetz.org/<br />
<br />
== Linux ==<br />
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.<br />
<br />
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.<br />
<br />
=== Hello World ===<br />
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.<br />
<br />
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von "make" compiliert.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung ===<br />
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).<br />
<br />
= Hardware + Software Versionen =<br />
<br />
Listet mal eure Hardware- und Softwareversion aus dem '''Applications''' => '''System Info''' Menü auf, wenn sie hier noch nicht stehen!<br />
<br />
== VP5500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|- <br />
| ind5 ||0645 || 4.20<br />
|- <br />
| ind5 ||0647 || 4.20<br />
|-<br />
| ind5 ||0648 || 4.20<br />
|-<br />
| ind5 ||0649 || 4.20<br />
|-<br />
| ind5 ||0702 || 4.20<br />
|}<br />
<br />
== VP6500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|-<br />
| ind3-v2 || 0711 || 3.22<br />
|-<br />
| ind3-v2 || 0713 || 3.22<br />
|- <br />
| ind3-v2 || 0716 || 3.22<br />
|}<br />
<br />
= Stromaufnahme =<br />
<br />
== VP5500 ==<br />
FIXME <br />
<br />
== VP6500 ==<br />
<br />
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 ein geringer Abfall über die Schottky-Diode einzurechnen ist). <br />
<br />
=== Messungen ===<br />
* Booten: bis zu 420mA<br />
* Einbuchen: ca. 400mA<br />
* mit abgeschaltetem Display, aber eingebucht und laufend (idle): ca. 80mA<br />
* mit angeschaltetem Display, eingebucht und idle: ca. 190mA<br />
* mit 100% Prozessor-Last (von serieller Konsole ausgeführt: "while true; do true; done"): ca. 60mA mehr als idle (Scheint aber auch größere Sprünge für andere CPU-Last zu geben)<br />
* im 'Deep Sleep' (wird ein paar Minuten nach Einschalten erreicht): <10mA (!), mit kurzen Wachphasen mit erheblichem Stromverbrauch (>100mA). Beachte: Die serielle Konsole ist in diesem Modus auch nicht mehr aktiv, das Telefon ist aber nicht abgestürzt (Tastendruck aktiviert die Konsole wieder).<br />
<br />
=== Ladegerät ===<br />
* Phone nicht in der Ladeschale: < 0.2W<br />
* Phone wird geladen: ca 4W</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&diff=45705PHILIPS VP5500 VoIP Telefon2010-04-05T07:51:27Z<p>Dl3daz: /* Startscripten */</p>
<hr />
<div>= Verwandte Artikel =<br />
* Konfiguration: http://www.mikrocontroller.net/topic/170483#new<br />
* Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new<br />
* http://das-labor.org/wiki/VP5500<br />
* (Hack) http://spritesmods.com/?art=vpx500<br />
* http://vp6500.bd8.nl/<br />
<br />
= Features =<br />
* Kamera-Auflösung 640x480 Pixel<br />
* 30 Bilder pro Sekunde<br />
* Kamera um 240° drehbar<br />
* 5,6 cm (2,2") TFT-Display, 176x220 Pixel, 65000 Farben<br />
* Audio-/Video-Ausgang (4fach Klinke-Cinch, beim VP5500 2,5mm Klinke und beim VP6500 3,5mm Klinke)<br />
* integrierter Li-Ion Akku, 3,7 V-/1100 mAh<br />
* englische und niederländische Menüsprache<br />
* Software Qtopia Version 2.1.0<br />
* Maße (LxBxH): 134x49x24 mm.<br />
<br />
[[Datei:Philips_VP5500.jpg]]<br />
<br />
= Hardware =<br />
* MCU: Freescale MC9328MX21 (ARM9) @ 266MHz<br />
* PC-to-TV-Konverter-Chip: FS455LF<br />
* WLAN: Marvell 88w8385, als Modul von WM-G-MR-01 (VP5500) / Philips BGW211, on-board (VP6500)<br />
* SDRAM: 2 x K4S56163LF - 4M x 16Bit x 4 Banks<br />
* 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<br />
* Kamera: dc-4626.a5 by chicony<br />
* Display: Samsung LTS220QC (HD66772 Controller)<br />
<br />
== System-Takte ==<br />
# cat /proc/systclk<br />
System clocks state:<br />
Ref clock : 32768Hz (int, premult by 512)<br />
MPLL clock: 263999905Hz (computed: 264000000Hz)<br />
SPLL clock: 163840000Hz (computed: 163840000Hz)<br />
CPU clock : 263999905Hz (PERSC = 0)<br />
Bus clock : 132000000Hz (BCLKDIV = 1, computed: 131999952Hz)<br />
CSI clock : unknown (cannot read register CSICR1)<br />
USB clock : 20480000Hz (USB_DIV = 7)<br />
Wait State: CS0U[WSC] = 10, CS0U[WSC] = 48<br />
loops_per_jiffy = 665058<br />
<br />
= Innenleben =<br />
<gallery widths="240" ><br />
<br />
Datei:Oberseite.jpg | Ansicht der Oberseite<br />
Datei:Oberseite_beschriftet.jpg | Oberseite mit Beschriftung der Bauteile<br />
Datei:Drumherum.jpg | Übersicht über die Komponenten<br />
</gallery><br />
<br />
<gallery widths="240" ><br />
Datei:Kontakte_Oberseite.jpg | UART-Schnittstelle Oberseite<br />
Datei:Kontakte_Unterseite.jpg | JTAG-Schnittstelle Unterseite<br />
</gallery><br />
<br />
<br />
== Testpins ==<br />
Original Liste von [http://www.mikrocontroller.net/topic/170483#1646514 Tino] [[Media:Philips vp5500 Liste Testpins.pdf|herrunterladen]].<br />
<br />
[[Bild:Philips vp5500 testpins 1.jpg|thumb| Testpins auf der Rückseite]]<br />
[[Bild:Philips vp5500 testpins 2.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]<br />
<br />
{| class="wikitable"<br />
! Testpin Nr. !! verbunden zu !! Funktion<br />
|-<br />
| 1 || LED || unbekannt<br />
|-<br />
| 2 || Kamera Pin 8 an CN1 || unbekannt<br />
|-<br />
| 3 || Pin 4 an IC1 || unbekannt<br />
|-<br />
| 4 || z.B. IC5 Pin V 18 || VDDA<br />
|-<br />
| 5 || GND || GND<br />
|-<br />
| 6 || NC || NC<br />
|-<br />
| 7 || Pin E 16 an IC5 || SAP_CLK<br />
|-<br />
| 8 || Pin 1 an CN 3 || Lautsprecher<br />
|-<br />
| 9 || Pin 2 an CN 3 || Lautsprecher<br />
|-<br />
| 10 || Pin an CN 4 || ?<br />
|-<br />
| 11 || Pin an CN 4 || ?<br />
|-<br />
| 12 || Pin an CN 4 || ?<br />
|-<br />
| 13 || Pin L 16 an IC5 || UART2_TXD<br />
|-<br />
| 14 || Pin C 12 an IC5 || USBH1_RXDM<br />
|-<br />
| 15 || Pin H 12 an IC5 || USBH1_TXDP<br />
|-<br />
| 16 || Pin B 19 an IC5 || CSPI2_SS2<br />
|-<br />
| 17 || Pin B16 an IC5 || SSI2_FS<br />
|-<br />
| 18 || Pin F 18 an IC5 || KP_ROW0<br />
|-<br />
| 19 || Pin K 18 an IC5 || KP_COL4<br />
|-<br />
| 20 || Pin L 19 an IC5 || UART3_TXD<br />
|-<br />
| 21 || Pin T 14 an IC5 || RESET_IN<br />
|-<br />
| 22 || geht an + des Kondensators neben IC6 || unbekannt<br />
|-<br />
| 23 || Pin D 13 an IC 9 || CLKOUT<br />
|-<br />
| 24 || Pin E 13 an IC 9 || CLKIN_P<br />
|-<br />
| 25 || Pin A 9 an IC 9 || DAC_D<br />
|-<br />
| 26 || Pin A 8 an IC 9 || DAC_A<br />
|-<br />
| 27 || Pin A 7 an IC 9 || DAC_B<br />
|-<br />
| 28 || Pin A 6 an IC 9 || DAC_C<br />
|-<br />
| 29 || Pin L 13 an IC 5 || UART1_TXD<br />
|-<br />
| 30 || Pin T 16 an IC 5 || BOOT1<br />
|-<br />
| 31 || Pin K 10 an IC 5 || UART1_RXD<br />
|-<br />
| 32 || Pin U 17 an IC 5 || BOOT2<br />
|-<br />
| 33 || Pin 9 an IC 23 || unbekannt<br />
|-<br />
| 34 || Pin D 19 an IC5 || CSPI2_SCLK<br />
|-<br />
| 35 || Pin C 14 an IC5 || TIN<br />
|-<br />
| 36 || Pin C 19 an IC5 || CSPI2_SS1<br />
|-<br />
| 37 || Pin D 18 an IC5 || CSPI2_SS0<br />
|-<br />
| 38 || Pin E 19 an IC5 || CSPI2_MOSI<br />
|-<br />
| 39 || Pin H 19 an IC5 || PWMO<br />
|-<br />
| 40 || Pin J 9 an IC 7 und IC 8 || VDD<br />
|-<br />
| 41 || Pin J 19 an IC 5 || KP_COL2<br />
|-<br />
| 42 || Pin K 16 an IC 5 || KP_COL3<br />
|-<br />
| 43 || Pin J 11 an IC 5 || KP_ROW2<br />
|-<br />
|44 || Pin J 17 an IC 5 || KP_COL1<br />
|-<br />
|45 || Pin G 19 an IC 5 || KP_ROW4<br />
|-<br />
|46 || Pin G 17 an IC 5 || KP_ROW3<br />
|-<br />
|47 || Pin D 5 an IC 10 und IC 11 || ACC<br />
|-<br />
|48 || Pin G 16 an IC 5 || KP_ROW1<br />
|-<br />
|49 || Pin J 18 an IC 5 || KP_COL0<br />
|-<br />
|50 || Pin V 18 an IC 5 || VDDA<br />
|-<br />
|51 || Pin 2 an CN KB-Stecker || ?<br />
|-<br />
|52 || Pin 2 an IC 15 || ?<br />
|-<br />
|53 || Pin 4 am LCD Stecker || ?<br />
|-<br />
|54 || Pin E 17 an IC 5 || CSPI2_MISO<br />
|-<br />
|55 || Pin 1,2,3,10,13 am LCD Stecker || ?<br />
|-<br />
|56 || Pin 3 an IC 16 || ?<br />
|-<br />
|57 || Pin U 10 an IC 5 || PC_PWRON<br />
|-<br />
|58 || Pin 1 IC 18 || ?<br />
|-<br />
|59 || an Diode über IC 16 || ?<br />
|-<br />
|60 || Pin 3 an IC 25 || ?<br />
|-<br />
|61 || Ladekontakt positiv || Ladegerät +<br />
|-<br />
|62 || GND || GND<br />
|-<br />
|63 || Akku Mittelkontakt || Akkustand? Temperatur?<br />
|-<br />
|64 || Transistor unter IC 16 || ?<br />
|-<br />
|65 || Pin 2 an IC 22 || ?<br />
|-<br />
|66 || Pin 1,12,30 an IC 24 || VSS<br />
|-<br />
|67 || Kondensator + unter IC 20 || ?<br />
|-<br />
|68 || Pin 5 an IC 21 || ?<br />
|-<br />
|69 || Pin 2 an IC 4 || ?<br />
|-<br />
|70 || Pin 25 an IC24 || MCLK<br />
|-<br />
|71 || Prozessor Pin W 14 || QVDD<br />
|}<br />
<br />
== UART ==<br />
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren.<br />
Jedoch startet dann das Telefon nicht vollständig (Fix siehe [[#Betrieb mit aktiverter serieller Schnittstelle]])<br />
<br />
* Spannungs-Pegel: 3.3V<br />
* Baudrate: 115200kbps<br />
* Stopbits: 1<br />
* Flussteuerung: keine<br />
=== VP5500 ===<br />
[[Bild:VP5500_seriell_highlight.svg|100px|UART-Pins VP5500(Frontseite der Platine)]]<br />
<br />
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br />
<br />
=== VP6500 ===<br />
[[Bild:VP5600-Serialport-Preliminary.jpg|100px|UART-Pins VP6500]]<br />
<br />
Die serielle Schnittstelle ist unter vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br><br />
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.<br />
<br />
== JTAG ==<br />
[[Bild:jtag.jpg Belegung der JTAG-Pins (Rückseite der Platine)]]<br />
<br />
= Hardware Modifikationen =<br />
== Zerlegen des Telefons ==<br />
<gallery><br />
Datei:01_offen_von_Hinten.JPG|1. Geöffnetes Akkufach<br />
Datei:02_Blende_entfernt.JPG|2. hintere Schwarze Blende entfernt<br />
Datei:03_Rückseite_entfernt.JPG|3. Schalenrückteil entfernt<br />
Datei:04_aufhebeln_Vorderteil.JPG|4. Druck nach außen<br />
Datei:05_vorderteil_entfernt.JPG|5. entferntes Vorderteil<br />
Datei:06_Elektronik_entfernt.JPG|6. entfernte Elektronik<br />
</gallery><br />
<br />
# das Akkufach muss geöffnet und die Schrauben entfernt werden<br />
# hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen<br />
#* 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.<br />
# Nun kann einfach das rückseitige Schalenteil abgeschaubt werden<br />
# das Entfernen des Frontschalenteils ist etwas tricky:<br />
#* von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten<br />
#* etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.<br />
#* Mit 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 außen wirkt.<br />
#* Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritisch, wenn der Bügel ein wenig anbricht)<br />
# Die Platine zu entfernen ist nicht ganz so schwierig.<br />
#* Zuerst die Seite auf der keine Knöpfe sind:<br />
#* vorichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten <br />
#* dann versuchen die Paltine seitlich nach oben aus dem Gehäuse zu ziehen<br />
#* dabei auf das Lautsprecherkabel und den Kamerakonnektor achten<br />
# Zusammenbau genauso, nur umgedreht ;)<br />
#* nicht die Lautsprecher- und Kamera-Stecker vergessen<br />
<br />
== Buchse für Uart einbauen ==<br />
<gallery><br />
Datei:10_Pins.JPG|1. unbearbeitete Pinreihe<br />
Datei:11_Pins_bearbeitet.JPG|2. präperierte Pinreihe<br />
Datei:09_Pads.JPG|3. präperierte Pads<br />
Datei:12_Pins_ausrichten.JPG|4. Pinreiheausrichten<br />
Datei:13_Pins_angelötet_1.JPG|5. angelötete Pinreihe<br />
Datei:14_Pins_angelötet_2.JPG|6. angelötete Pinreihen<br />
Datei:08_Mittelteil.JPG|7. Mittelteil mit ausgefeiltem Loch<br />
Datei:15_Mittelteil_zusammengebaut.JPG|8. wieder zusammengesteckt<br />
Datei:16_in_Aktion.JPG|9.verbundene serielle Schnittstelle<br />
</gallery><br />
<br />
Zunächst muss das Telefon zerlegt werden ([[#Zerlegen des Telefons]])<br />
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. <br />
<br />
# Hierfür habe ich einreihige gedrehte IC-Sockel genutzt <br />
# deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)<br />
# ebendso auf die Pads ein wenig eingezinnt<br />
# ausrichten und festlöten<br />
# eine Reihe<br />
# die zweite Reihe<br />
# 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.<br />
# fertig<br />
# und im Einsatz<br />
<br />
= Das VPx500 'rooten' =<br />
<br />
Um Zugang zu den Dateien auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten<br />
<br />
# serielle Schnittstelle<br />
# telnet<br />
<br />
telnet ist der komfortablere Weg. Um telnet zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf den Updateserver von KPN zuzugreifen (den es nicht mehr gibt). Glücklicherweise geschieht dies nicht über eine feste IP, sondern über einen Hostnamen, so dass man an dieser Stelle sich durch einen eigenen DNS den Domainname auf einen eigenen Server umleiten kann. Daher ist im eignenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte 'Static DNS', ..).<br />
Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.<br />
<br />
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:<br />
<br />
telnet 123.456.789.012<br />
# <br />
<br />
Passwort ist "toor".<br />
Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.<br />
<br />
Unter Applications>Registration sind Netzwerk- und VoIP-Einstellungen zu finden.<br />
<br />
== Anleitung für Fritz-Box-Benutzer ==<br />
Die Fritzboxen bieten bisher leider keine Möglichkeit, den verwendeten DNS<br />
direkt im Webinterface zu ändern, über Umwege geht es aber doch:<br />
* Über das Webinterface der Fritzbox die Einstellungen sichern<br />
* Exportdatei im Texteditor öffnen (am besten nicht Notepad, da der die Unix-Zeilenumbrüche nicht versteht - zur Not geht auch Wordpad)<br />
* nach overwrite_dns1 suchen (gibt es zwei mal) und da den DNS 84.38.68.30 oder 188.40.123.50 eintragen<br />
* am Anfang der Exportdatei VOR "**** CFGFILE:ar7.cfg" eine Zeile 'NoChecks = yes' einfügen, damit die Fritzbox die nun nicht mehr passende Checksumme ignoriert.<br />
* Einstellungen zurück in die Fritzbox übertragen.<br />
<br />
Wenn die Telefone entsperrt sind, den DNS wieder entfernen (Es ist<br />
vielleicht eine ganz gute Idee, wenn man da zwei unabhängige DNS-Server<br />
einträgt, so umgeht man auch gleich providerseitige DNS-Sperren)<br />
<br />
= Voice over IP (VoIP, SIP) =<br />
<br />
*http://de.wikipedia.org/wiki/IP-Telefonie<br />
*http://de.wikipedia.org/wiki/Session_Initiation_Protocol<br />
*http://de.wikipedia.org/wiki/H.323<br />
*http://de.wikipedia.org/wiki/Softphone<br />
<br />
Benutzer ist 103<br />
<br />
Mit Ekiga konnte so per 103@xxx.xxx.xxx.xxx eine Sprachverbindung zum Telefon aufgebaut werden.<br />
<br />
= Software Modifikationen =<br />
== Vorsicht Fallen ==<br />
Es ist nicht schwer, sich den Zugang zum Telefon abzuschneiden, wenn man nicht aufpasst.<br />
=== Startscripten ===<br />
Die Scripten in /etc/rc.d/" müssen im Hintergrund laufen. Tut ein Script das nicht, ist an dieser Stelle Schluß mit dem Bootvorgang.<br />
<br />
Dann darf man als nächstes den Lötkolben anheizen und die serielle Schnittstelle ([[UART]]) zugänglich machen.<br />
<br />
== Grundlagen ==<br />
Bestimmte Aktionen werden immer wieder benötigt.<br />
Diese sollen hier kurz beschrieben werden.<br />
<br />
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.<br />
<br />
=== Dateien bearbeiten mit vi===<br />
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können.<br />
Für eine genaue Bedienung bitte Google benutzen.<br />
Die wichtigsten Bedienelemente werden hier kurz erläutert.<br />
<br />
Datei Öffnen mit 'vi Dateipfad'<br />
vi kennt zwei Modi: Kommando- und Einfüge-Modus.<br />
i - wechselt in den Einfüge-Modus, in dem geschrieben werden kann<br />
<br />
[Esc] wechselt zurück in den Kommandomodus. <br />
In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.<br />
:x - löscht das Zeichen an Cursor position<br />
:dd - löscht die ganze zeile<br />
:<nowiki>:</nowiki>q! - schließt ohne zu speichern<br />
:<nowiki>:</nowiki>w - speichert<br />
:<nowiki>:</nowiki>wq - speichert und beenden<br />
<br />
=== Dateien auf das Telefon laden ===<br />
Um Daten von einem http-Server zu laden, benutzt man <br />
wget url<br />
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.<br />
<br />
Um Daten von einem ftp-Server zu laden, benutzt man ftp.<br />
Auch hier muss vorher in das zielverzeichnis gewechselt werden.<br />
ftp hostname<br />
dann gegebenenfalls die Zugangsdaten eingeben und mittels 'cd' und 'ls' in das Entsprechende Verzeichnis auf dem FTP-Server wechseln<br />
und anschließend mittels <br />
get dateiname<br />
die Datei herunterladen.<br />
<br />
=== Dateien vom Telefon herunterladen ===<br />
Auch hier bietet sich ein FTP an.<br />
Mittels 'ftp hostname' verbinden, Benutzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels<br />
put localeDatei<br />
eine Lokale Datei hochladen.<br />
<br />
=== Alternative Dropbear ===<br />
<br />
Wurde der dropbear-ssh server installiert [[#Dropbear (SSH-Server) installieren]] können mittels eines Programms mit SCP-Unterstützung (zB. [http://winscp.net/eng/docs/lang:de WinSCP] für Windows) sehr komfortabel Dateien ausgetauscht werden.<br />
<br />
Mit WinSCP können auch Dateien direkt bearbeitet werden.<br />
Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.<br />
<br />
== Backup ==<br />
=== Backup des Flash ===<br />
If you want to make a backup of your root partition, you can do as<br />
follows:<br />
<br />
<c><br />
echo '#!/bin/sh' > /tmp/backup.sh<br />
echo 'cat /dev/mtdb2 2>/dev/null' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
micro_inetd 31337 /tmp/backup.sh<br />
</c><br />
<br />
This'll make your device listen for incoming connections on port 31337.<br />
On your host system you may then simply run <br />
nc ip.of.your.phone 31337 > fon_rootfs<br />
et voilà, you got your rootfs packed into a file.<br />
<br />
Note that the backed up file is not ext2, but a jffs2 formatted<br />
filesystem. These can't be handled by a simple "mount -o loop" as you'd<br />
have thought... so here's how you mount it:<br />
<br />
<c><br />
modprobe jffs2<br />
modprobe mtdram total_size=32768 erase_size=128<br />
modprobe mtdblock<br />
mkdir /tmp/phone-root<br />
mknod /tmp/phone-mtdb2 b 31 0<br />
dd if=/your/backup/file of=/tmp/phone-mtdb2<br />
mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root<br />
</c><br />
<br />
[[#Dateisystem herunterladen]] describes another way to dump the filesystem for closer examination.<br />
<br />
=== Komplettes Backup ===<br />
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.<br />
<br />
cd /etc/rc.d/init.d<br />
wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe<br />
chmod +x /etc/rc.d/init.d/S91backup_pipe<br />
<br />
Damit wird eine Art Backup-Server mit dem Boot gestartet.<br />
wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.<br />
<br />
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:<br />
<br />
nc 192.168.1.3 31337 > fon_rootfs<br />
nc 192.168.1.3 31338 > fon_udata<br />
nc 192.168.1.3 31339 > fon_usettings<br />
nc 192.168.1.3 31340 > fon_bootld<br />
nc 192.168.1.3 31341 > fon_kernel<br />
<br />
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_*<br />
Dateinamen könnt ihr natürlich auch frei vergeben.<br />
<br />
fon_udata ist die /user_data Partition, fon_usertings dementsprechend<br />
die /user_settings Partition.<br />
<br />
Der bootld Bereich enthält auch die Parameter. Um das später (falls<br />
überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in<br />
zwei Teile aufgeteilt werden. Der erste enthält dann den reinen<br />
Bootloader-Bereich, der zweite die Parameter. Wer's wirklich braucht für<br />
den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll<br />
ist das aber nicht, hat man den Bootloader erstmal mit was anderem<br />
überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen<br />
benutzen....<br />
<br />
=== Zurückspielen der Backups ===<br />
<br />
1) Man braucht ein (die) Backup-Image(s).<br />
<br />
2) Serielle Verbindung zum Telefon<br />
<br />
3) Akku abstecken, wieder anstecken.<br />
<br />
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so<br />
das man im Bootloader landet. Dabei muss man recht schnell sein. Es<br />
sollte dann ein Prompt kommen:<br />
<br />
<c><br />
blob><br />
</c><br />
<br />
5) Nun gibt man ein <br />
xdownload param<br />
Wobei 'param' der Teil ist, den man wiederherstellen will:<br />
* blob - Bootloader (fon_bootld)<br />
* param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)<br />
* kernel - Der Kernel (fon_kernel)<br />
* ramdisk - Das Root-Filesystem / (fon_rootfs)<br />
* ramdisk2 - Das /user_data Filesystem (fon_udata)<br />
* ramdisk3 - Das /user_settings Filesystem (fon_usettings)<br />
<br />
Beim Backup ist blob + param in einer Datei, müsste man also ggf.<br />
erstmal aufsplitten.<br />
<br />
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den<br />
Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.<br />
<br />
7) Kaffee trinken, auf's Klo gehen, mit Frau/Freundin/Mutter ein Gespräch<br />
anfangen.<br />
<br />
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet<br />
wieder am "blob>" prompt. Nun gibt man<br />
flash param<br />
ein.<br />
<br />
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.<br />
<br />
10) "boot" eingeben. Da Telefon bootet nun normal.<br />
<br />
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das<br />
Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt<br />
man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle<br />
abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten<br />
(Akku kurz ab- und wieder anstöpseln)<br />
<br />
=== Dateisystem herunterladen ===<br />
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.<br />
<br />
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:<br />
<br />
<c><br />
echo '#! /bin/sh' > /tmp/backup.sh<br />
echo 'cd /' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
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<br />
micro_inetd 31340 /tmp/backup.sh<br />
</c><br />
<br />
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.<br />
<br />
Auf einem anderen Linux system (oder cygwin) kann mittels<br />
<c><br />
nc telefon-Ip 31340 > file.tar<br />
</c><br />
die Datei abgerufen werden.<br />
<br />
Der Vorgang dauert aber ein ganz paar Minuten.<br />
<br />
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.<br />
<br />
== Betrieb mit aktiverter serieller Schnittstelle ==<br />
<br />
Das 5500 scheint nicht komplett zu starten wenn man TIN auf low hat<br />
und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei<br />
<br />
/usr/local/startup/daemon.sh<br />
<br />
ziemlich am Anfang das TINDETECT="TRUE" ändert auf TINDETECT="FALSE"<br />
<br />
Danach startet er auch mit aktiver serieller Verbindung komplett durch<br />
und das Gerät ist ganz normal bedienbar.<br />
<br />
<br />
<br />
== Aktivierung WPA2 Unterstützung ==<br />
<p>Standardmäßig kann das Telefon nur WPA, dabei unterstützt es allerdings auch <b>WPA mit AES</b> Verschlüsselung.</p><br />
<p>Es gibt zwei verschiedene Tricks mit denen auch WPA2 aktiviert werden kann.<br />
Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).</p><br />
<br />
=== Trick1 ===<br />
Mittels<br />
vi /etc/marvell/wpa_supplicant.conf<br />
den Texteditor starten.<br />
Mit PageDown (Bild runter) bis zum Ende des Files gehen.<br />
Die Zeilen <br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
auskommentieren, indem ein # vorangestellt wird:<br />
* cursor auf Beginn einer Zeile <br />
* i drücken zum Einfügen<br />
* # eintippen<br />
* [Esc]<br />
Sind alle Zeilen auskommentiert, dann mittels<br />
:wq[enter]<br />
abspeichern und Editor verlassen.<br />
<br />
Danach neu booten.<br />
<br />
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)<br />
<br />
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.<br />
<br />
Wichtige Info von airmack via IRC:<br />
<br />
'''Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf <u>hinten anzuhängen</u>, niemals aber vorne einzufügen!'''<br />
<br />
=== Trick2 ===<br />
Dieser Trick funktioniert mit Accesspoints, bei denen man auch WPA Verbindungen mit AES verschlüsseln kann. Vorteil dieses Tricks ist, dass man die wpa_supplicant.conf nicht manuell editieren muss. Allerdings unterstützt nicht jeder Accesspoint WPA mit AES (aber dd-wrt kann das).<br />
<br />
Man konfiguriert den Accesspoint zunächst mit WPA PSK und wählt AES als Verschlüsselungsalgorithmus. Jetzt meldet man das Telefon an, das Telefon erkennt richtig, dass eine WPA Verbindung vorliegt und verbindet sich per WPA und AES mit dem Accesspoint. Anschliessend konfiguriert man den Accesspoint von WPA PSK AES nach WPA2 PSK AES. Jetzt schaltet man das VP5500/6500 aus und wieder ein. Nachdem es fertig gebootet hat, verbindet es sich automisch per WPA2 PSK und mit AES Verschlüsselung. Fertig.<br />
<br />
== Menüs ==<br />
=== Hauptmenu ===<br />
<br />
Das File <br />
/usr/local/etc/defaultbuttons.conf<br />
enthält unter anderm die definition des Hauptmenus.<br />
<br />
Hierfür ist der Abschnitt Menu besonders interessant.<br />
[Menu]<br />
1 = Applications/camera.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications<br />
4 = Settings<br />
5 = Applications/addressbook.desktop<br />
6 = Settings/RingProfiles.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 2<br />
<br />
'Rows' und 'Columns' geben an, wieviel Reihen und Spalten das Hauptmenu hat.<br />
Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen.<br />
Die Menupunkte sind definiert in den Verzeichnissen unter <br />
/usr/local/apps<br />
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist.<br />
direkte Menupunkte haben Dateinamen mit der Endung .desktop<br />
'Default' bestimmten vorselektierten Eintrag.<br />
<br />
Hier ein weiteres Beispiel für ein angepasstes Menu:<br />
[Menu]<br />
1 = Applications/addressbook.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications/sysinfo.desktop<br />
4 = Applications<br />
5 = Settings<br />
6 = Games<br />
7 = Applications/camera.desktop<br />
8 = Applications/photoedit.desktop<br />
9 = Applications/manualsub.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 3<br />
<br />
Der Ordner Games ist (momentan ;) leer.<br />
<br />
=== Genereller Aufbau Menü-Einträge===<br />
Die Einträge für die Menüs sind im Filesystem abgelegt:<br />
<br />
* Settings: /usr/local/apps/Settings<br />
* Applications: /usr/local/apps/Applications<br />
* Klingeltöne: /usr/local/etc/SystemRingTones/<br />
<br />
Die Dateien haben die Endung ".desktop" und sind normale Textdateien, die die relevanten Infos enthalten.<br />
<br />
Ein Beispiel aus dem Settingsordner:<br />
[Translation]<br />
File=QtopiaSettings<br />
Context=Sound<br />
[Desktop Entry]<br />
Type=Application<br />
Exec=sound<br />
Icon=Sound<br />
Name[]=Sound<br />
CanFastload=0<br />
<br />
Der Abschnitt 'Translation' gibt an in welchem File, die Lokalisationsdaten stehen.<br />
<br />
Der Abschnitt 'Desktop Entry':<br />
* Type: Typ des Eintrages <br />
** Application für Anwendungen<br />
** audio/x-wav für Klingeltöne<br />
* Exec: Anwendung, die ausgeführt werden soll<br />
* Icon: Icon, das im Menü benutzt wird. <br />
** Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png<br />
** manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png<br />
* 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<br />
<br />
Hier ein Textfile mit allen desktop-Files als Referenz: [[File:alleDesktopFiles.txt]]<br />
<br />
=== Versteckte Menüeinträge ===<br />
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung '.desktopMASK'.<br />
Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschalten.<br />
<br />
folgendes an der Kommandozeile eingeben:<br />
cd /usr/local/apps/Settings<br />
mv datetime.desktopMASK datetime.desktop<br />
mv callforward.desktopMASK callforward.desktop<br />
mv calloptions.desktopMASK calloptions.desktop<br />
mv resetparam.desktopMASK resetparam.desktop<br />
mv subkpncode.desktopMASK subkpncode.desktop<br />
<br />
Dies aktiviert folgende Optionen:<br />
* Datums/Zeit-Einstellung<br />
* Anrufweiterleitung<br />
* Anrufoptionen<br />
* Parameter zurücksetzen<br />
* Number Switch<br />
<br />
<br />
Die nützlichsten sind wohl die ersten Einträge.<br />
Bei dem "Number Switch" ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.<br />
<br />
<br />
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine [[File:demomode.desktop]] anlegen.<br />
<br />
Hierfür ist folgende Prozedur nötig:<br />
* im Terminal<br />
cd /usr/local/apps/Applications<br />
vi demomode.desktop<br />
<br />
* i drücken <br />
* folgendes Textfragment einfügen <br />
[Translation]<br />
File=QtopiaApplications<br />
Context=DemoMode<br />
[Desktop Entry]<br />
Exec=demomode<br />
Icon=Camera<br />
Type=Application<br />
Name[]=DemoMode<br />
* [Esc] <br />
* :wq [Enter] <br />
<br />
Dies schaltet einen Demo-Modus frei.<br />
<br />
=== Französisch ===<br />
Es gab die Geräte wohl auch in Frankreich von der France Telekom.<br />
Zumindest sind entsprechende monitor und upgrade Referenz-Dateien<br />
vorhanden in denen das steht. Daher wohl auch die Französischen<br />
Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem<br />
Unterverzeichnis, so das sie nicht auswählbar sind.<br />
<br />
Um diese Dateien zu aktivieren:<br />
<br />
cd /usr/local/i18n<br />
mv NOTUSED/fr .<br />
<br />
Nun ist auch noch französisch als Sprache verfügbar.<br />
<br />
== Grafische Anpassungen ==<br />
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).<br />
<br />
Einige besonders interessante werden hier aufgeführt:<br />
<br />
=== Eigene Startup/Shutdown-Animation ===<br />
<br />
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in<br />
<br />
/usr/local/pics/qpe<br />
<br />
Die Links "splash.gif" und "goodbye.gif" zeigen auf die tasächlich zu verwendenen Dateien ("splash-chuck.gif", "goodby-chuck.gif").<br />
Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die<br />
splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte<br />
mit:<br />
<br />
rm /usr/local/pics/qpe/splash.gif<br />
<br />
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die<br />
eigene Datei:<br />
<br />
ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif<br />
<br />
Danach wird dann bei jedem Neustart die eigene Animation angezeigt.<br />
Analog hierzu mit der goodbye.gif.<br />
<br />
<br />
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet<br />
anmelden und:<br />
<br />
<c><br />
cd /usr/local/pics/qpe/<br />
wget http://dein.server/woauchimmer/Matrix5.gif<br />
rm /usr/local/pics/qpe/splash.gif<br />
ln -s Matrix5.gif splash.gif<br />
</c><br />
<br />
Die GIF Animation kann bis zu 176x220 Pixel groß sein.<br />
Kleinere (möglicherweise auch größere) Bilder werden zentriert.<br />
<gallery><br />
Bild:walking_baby_tux.gif<br />
Bild:custwakeup2.gif<br />
Bild:custgoodbye2.gif<br />
Bild:94vw4.gif<br />
Bild:1_Matrix--16984.gif<br />
Bild:1_Matrix--16985.gif<br />
Bild:3.gif<br />
Bild:ClanSpider2.gif<br />
Bild:TS12.gif<br />
Bild:Matrix5.gif<br />
Bild:qtopia3.gif<br />
Bild:qtopia0.gif<br />
</gallery><br />
<br />
=== Eigener Boot/Update-Screen ===<br />
<br />
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.<br />
/user_data/data/welcome.rgb565<br />
/usr/local/startup_V4.20/update.bin<br />
<br />
Weitere Beispielbilder:<br />
/user_data/prod/data/lcd_test_card1.bin<br />
/user_data/prod/data/lcd_test_card2.bin<br />
<br />
Diese werden direkt in den Framebuffer geschrieben.<br />
Daher müssen sich diese genau ein bestimmtes Format halten: <br />
* Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)<br />
* 16bit pro Pixel RGB565<br />
<br />
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:<br />
# Ein Bild in Gimp mit 176x220 erstellen<br />
# das Bild vertikal spiegeln<br />
# Bild->Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)<br />
# Datei->Kopie speichern...<br />
# Als Windowsbitmap -> erweiterete Optionen -> 16bit R5G6B5<br />
# BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)<br />
tail -c 105600 input.bmp > output.raw<br />
<br />
<br />
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.<br />
cat /user_data/prod/data/lcd_test_card1.bin > /dev/fb0<br />
<br />
== Wichtige Verzeichnisse ==<br />
<br />
=== Adressdaten ===<br />
<br />
# cat /user_data/home/Applications/addressbook/addressbook.xml <br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Addressbook ><AddressBook><br />
<Groups><br />
</Groups><br />
<Contacts><br />
<Contact<br />
Uid="-1269720893" <br />
Categories="-1269431263;-1266109093;-1266109094" <br />
FirstName="ich" <br />
FileAs="ich" <br />
JobTitle="cc" <br />
Department="dep"<br />
Company="aa" <br />
BusinessPhone="55" <br />
BusinessFax="77" <br />
BusinessMobile="66" <br />
HomePhone="55"<br />
HomeMobile="11" <br />
HomePc="12"<br />
HomeData="13"<br />
HomeFax="14"<br />
BusinessStreet="street"<br />
BusinessCity="city"<br />
BusinessState="state"<br />
BusinessZip="zip"<br />
BusinessCountry="country"<br />
BusinessPager="88"<br />
Office="office"<br />
Profession="prof"<br />
Assistant="ass"<br />
Manager="man"<br />
HomeStreet="ptjml"<br />
HomeCity="cit"<br />
HomeState="stat"<br />
HomeZip="zi"<br />
HomeCountry="coun"<br />
Spouse="spouse"<br />
Gender="1"<br />
Birthday="20100322"<br />
Anniversary="20100429"<br />
Children="child"<br />
Notes="gakm"<br />
CompanyPronunciation="bb"<br />
BUSINESS_CONTACT=""<br />
photofile="ci-1269721575-0.jpg"<br />
qdl-private-data=""<br />
tone="/usr/local/etc/SystemRingTones/16-Tetris.desktop"<br />
/><br />
<Contact Uid="-1269554029" <br />
FirstName="VoIP" <br />
LastName="Phone1" <br />
FileAs="VoIP Phone1" <br />
HomeMobile="**621" <br />
tone="/usr/local/etc/SystemRingTones/15-Techno2.desktop" /><br />
<Contact Uid="-1269554032" <br />
Categories="-1269431263"<br />
FirstName="VoIP" <br />
LastName="Phone3" <br />
FileAs="VoIP Phone3" <br />
HomeMobile="**623" <br />
BUSINESS_CONTACT="" <br />
qdl-private-data="" <br />
tone="/usr/local/etc/SystemRingTones/08-Celtrelax.desktop" /><br />
</Contacts><br />
</AddressBook><br />
<br />
UID ist wohl egal, solange sie nicht zweimal vorkommen.<br />
<br />
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben<br />
"maxEntries = 500" in der "Contacts.conf"<br />
<br />
Die Kategorien stehen in /user_settings/Categories.xml:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE CategoryList><br />
<Categories><br />
<Category id="-1269431263" name="_Personal" /><br />
<Category id="-1269431262" name="_Business" /><br />
</Categories><br />
<br />
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".<br />
<br />
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!<br />
<br />
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).<br />
<br />
=== Fotos & Videoschnappschüsse ===<br />
<br />
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:<br />
/user_data/home/Documents<br />
<br />
Die Bilder sind dabei nach folgendem Namensschema benannt:<br />
<br />
DD-MM-YYYY-hh:mm:ss.jpg<br />
<br />
Tag (DD) und Monat (MM) können auch einstellig sein.<br />
<br />
== Klingeltöne ==<br />
<br />
Die Klingeltöne liegen, wie oben beschrieben unter:<br />
<br />
/usr/local/etc/SystemRingTones/<br />
<br />
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich, z.B. mit MhWaveEdit (Linux/GTK) recht komfortabel erzeugen lassen.<br />
<br />
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird.<br />
Eine für den fiktiven 16. Klingelton erzeugte Datei "16-Tetris.desktop" könnte den folgenden Inhalt haben:<br />
<br />
[Desktop Entry]<br />
Categories =<br />
File =16-Tetris.wav<br />
Name[] =16-Tetris<br />
Type = audio/x-wav<br />
[Translation]<br />
File=QtopiaRingTones<br />
Context=16-Tetris<br />
<br />
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.<br />
<br />
<br />
=== Timeserver ===<br />
<br />
http://www.mikrocontroller.net/topic/170483#1645101<br />
Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg<br />
die Adressen der Zeitserver "ntp.xs4all.nl" und "130.142.110.71". Diese<br />
könnte man z.B. auf "ptbtime1.ptb.de" und "ptbtime2.ptb.de" ändern.<br />
<br />
(http://www.mikrocontroller.net/topic/170483#1649594)<br />
das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 -<br />
chronos.zedat.fu-berlin.de kann man als server nehmen.<br />
<br />
== Zusätzliche Software ==<br />
=== Dropbear (SSH-Server) installieren ===<br />
<br />
# Mit telnet auf dem Gerät einloggen<br />
# folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://vp6500.bd8.nl/bin/dropbear.tgz<br />
tar -xzf dropbear.tgz<br />
rm dropbear.tgz<br />
cd /etc/rc.d/init.d<br />
mv dropbear S90dropbear<br />
./S90dropbear start<br />
Kommando 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch<br />
gestartet wird.<br />
<br />
=== Nano 2.2.3 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /usr/bin<br />
wget http://www.mikrocontroller.net/attachment/74023/nano<br />
* Mit folgendem Befehl den Editor ausführbar machen:<br />
chmod +x /usr/bin/nano<br />
* Nun ist vi Geschichte ;-)<br />
<br />
=== OpenVPN 2.0.9 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74380/openvpn.tar.gz<br />
tar -xzf openvpn.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== OpenVPN 2.1.1 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74395/openvpn-2.1.1.tar.gz<br />
tar -xzf openvpn-2.1.1.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
=== Tinc 1.0.12 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://www.mikrocontroller.net/attachment/74396/tinc-1.0.12.tar.gz<br />
tar -xzf tinc-1.0.12.tar.gz<br />
depmod<br />
mknod /dev/net/tun c 10 200<br />
<br />
= SIP Einstellungen =<br />
<br />
== Einstellung für 1und1 ==<br />
<br />
* SIP1:<br />
** Display Name: ...<br />
** Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Telephone Number: 0#VORWAHLOHNE0#NUMMER#<br />
* Auth:<br />
** Auth Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Password: *********<br />
* Server:<br />
** sip.1und1.de:5060<br />
* Proxy:<br />
** sip.1und1.de:5060<br />
* RTP:<br />
** 30000 und 30019<br />
* STUN:<br />
** stun.1und1.de<br />
* STUN Server Port:<br />
** 3478<br />
* SIP2:<br />
** UDP: 5060<br />
** TCP: 5060<br />
<br />
== Einstellung für Sipgate ==<br />
<br />
*SIP1<br />
**Display Name: Sipgate Username<br />
**User Name: your SIPgate-ID<br />
**Telephone Number: Sipgate-Telefonnummer<br />
*Auth<br />
**Authentification UserName: your SIPgate-ID<br />
**Password: Sipgate Passwort<br />
*Server<br />
**SIP register address:port: sipgate.de:5060<br />
*Proxy<br />
**SIP proxy1 address:port: sipgate.de:5060<br />
*SIP2<br />
**SIP Port Listen<br />
**for UDP: 5062<br />
**for TCP: 5062<br />
**for TCP TLS: 5053<br />
*STUN: [X] use rport<br />
<br />
SIP Outbound muss leer sein.<br />
<br />
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.<br />
<br />
== Einstellung für Ekiga.net ==<br />
<br />
*SIP1<br />
**Display Name: Irgendwas<br />
**User Name: username<br />
**Telephone Number: leer<br />
*Auth<br />
**Authentication User Name: username<br />
**Password: password<br />
*Server<br />
**SIP register: ekiga.net:5060<br />
**Protocol: ( ) TCP (*) UDP<br />
**Expire Timer: 3600<br />
**Keep Alive: 0<br />
*Proxy<br />
**alle leer<br />
*STUN<br />
**( ) use rport<br />
**STUN Server IP address: stun.ekiga.net<br />
**STUN Server port: 3478<br />
*SIP2<br />
**(*) Symmetric Mode<br />
**UDP: 5060<br />
**TCP: 5060<br />
**TCP TLS: 5061<br />
*OBproxy<br />
**alle leer<br />
<br />
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.<br><br />
Weitere features: https://www.ekiga.net/index.php?page=services<br><br />
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.<br> <br />
<p>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 <b>einen neuen Kontakt</b> (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 <b>[#]</b>-Taste des VP5500/6500 umschalten.</p><br />
<p>Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der <b>Video-Taste</b> auf der Tastatur des VP6500</p><br />
<br />
== Einstellung für Fritzbox 7170/7270 und andere mit SIP-Registrar ==<br />
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,<br> dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.<br> Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.<br><br />
<br><br />
Im Beispiel will die FB die Nummer 621 vergeben:<br><br />
'''Reiter SIP1'''<br><br />
Display Name: <leer lassen><br><br />
User Name: 621<br><br />
Telephone Number: 621<br><br />
<br><br />
'''Reiter Auth'''<br><br />
Authentication UserName: 621<br><br />
Password: [hier das gleiche, wie auf der FB eingeben]<br><br />
<br><br />
'''Reiter Server'''<br><br />
SIP register address:port<br><br />
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060<br><br />
Protocol: UDP<br><br />
ExpireTime: 3600<br><br />
Keep Alive: 300<br><br />
<br><br />
'''Anmerkungen dazu:'''<br><br />
Protokoll: UDP<br><br />
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.<br> <br />
Keep Alive: 300<br><br />
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen <br>wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so <br>aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.<br><br />
Anmeldung:<br><br />
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.<br> Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.<br><br />
<br />
Falls eure Fritz!Box keine Möglichkeit bietet, ein IP-Telefon anzumelden, empfehle ich euch mal in das http://wiki.ip-phone-forum.de/skript:speedport2fritz einzulesen.<br><br />
Bzw. mal im IP-Phone-Forum nach SIP-Registrar suchen.<br><br />
<br />
= Buildumgebung erstellen =<br />
<br />
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.<br />
<br />
== Windows ==<br />
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.<br />
<br />
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).<br />
<br />
=== Freetz-Linux ===<br />
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).<br />
Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.<br />
<br />
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus.<br />
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.<br />
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.<br />
<br />
Benutzername und alle Kennwörter sind 'freetz'<br />
<br />
==== Installation und Test der VP5500 Toolchain ====<br />
Installation der Buildumgebung:<br />
sudo mkdir /opt/VP5500<br />
sudo mkdir /opt/VP5500/toolchain<br />
cd /opt/VP5500/toolchain<br />
sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2<br />
sudo bunzip2 arm-linux-gcc-3.3.2.tar.bz2<br />
sudo tar -xf arm-linux-gcc-3.3.2.tar<br />
sudo rm arm-linux-gcc-3.3.2.tar<br />
sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm<br />
<br />
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.<br />
<br />
Test der Buildumgebung:<br />
cd ~<br />
wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz<br />
tar -xzf helloworld.tgz<br />
rm helloworld.tgz<br />
cd helloworld<br />
make<br />
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.<br />
<br />
==== Freetz-Linux eigentlicher Anwendungszweck ====<br />
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen.<br />
Folgende Schritte machen dies:<br />
cd ~<br />
svn checkout http://svn.freetz.org/trunk freetz-trunk <br />
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis 'freetz-trunk'.<br />
Konfigurieren mit 'make menuconfig' und Image erstellen mit 'make'.<br />
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.<br />
<br />
Für detailiertere Infos bitte direkt bei Freetz nachschlagen:<br />
http://trac.freetz.org/<br />
<br />
== Linux ==<br />
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.<br />
<br />
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.<br />
<br />
=== Hello World ===<br />
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.<br />
<br />
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von "make" compiliert.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung ===<br />
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).<br />
<br />
= Hardware + Software Versionen =<br />
<br />
Listet mal eure Hardware- und Softwareversion aus dem '''Applications''' => '''System Info''' Menü auf, wenn sie hier noch nicht stehen!<br />
<br />
== VP5500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|- <br />
| ind5 ||0645 || 4.20<br />
|- <br />
| ind5 ||0647 || 4.20<br />
|-<br />
| ind5 ||0648 || 4.20<br />
|-<br />
| ind5 ||0649 || 4.20<br />
|-<br />
| ind5 ||0702 || 4.20<br />
|}<br />
<br />
== VP6500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|-<br />
| ind3-v2 || 0711 || 3.22<br />
|-<br />
| ind3-v2 || 0713 || 3.22<br />
|- <br />
| ind3-v2 || 0716 || 3.22<br />
|}<br />
<br />
= Stromaufnahme =<br />
<br />
== VP5500 ==<br />
FIXME <br />
<br />
== VP6500 ==<br />
<br />
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 ein geringer Abfall über die Schottky-Diode einzurechnen ist). <br />
<br />
=== Messungen ===<br />
* Booten: bis zu 420mA<br />
* Einbuchen: ca. 400mA<br />
* mit abgeschaltetem Display, aber eingebucht und laufend (idle): ca. 80mA<br />
* mit angeschaltetem Display, eingebucht und idle: ca. 190mA<br />
* mit 100% Prozessor-Last (von serieller Konsole ausgeführt: "while true; do true; done"): ca. 60mA mehr als idle (Scheint aber auch größere Sprünge für andere CPU-Last zu geben)<br />
* im 'Deep Sleep' (wird ein paar Minuten nach Einschalten erreicht): <10mA (!), mit kurzen Wachphasen mit erheblichem Stromverbrauch (>100mA). Beachte: Die serielle Konsole ist in diesem Modus auch nicht mehr aktiv, das Telefon ist aber nicht abgestürzt (Tastendruck aktiviert die Konsole wieder).<br />
<br />
=== Ladegerät ===<br />
* Phone nicht in der Ladeschale: < 0.2W<br />
* Phone wird geladen: ca 4W</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&diff=45670PHILIPS VP5500 VoIP Telefon2010-04-04T10:05:46Z<p>Dl3daz: /* Software Modifikationen */</p>
<hr />
<div>= Verwandte Artikel =<br />
* Konfiguration: http://www.mikrocontroller.net/topic/170483#new<br />
* Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new<br />
* http://das-labor.org/wiki/VP5500<br />
* (Hack) http://spritesmods.com/?art=vpx500<br />
* http://vp6500.bd8.nl/<br />
<br />
= Features =<br />
* Kamera-Auflösung 640x480 Pixel<br />
* 30 Bilder pro Sekunde<br />
* Kamera um 240° drehbar<br />
* 5,6 cm (2,2") TFT-Display, 176x220 Pixel, 65000 Farben<br />
* Audio-/Video-Ausgang (Cinch)<br />
* integrierter Li-Ion Akku, 3,7 V-/1100 mAh<br />
* englische und niederländische Menüsprache<br />
* Software Qtopia Version 2.1.0<br />
* Maße (LxBxH): 134x49x24 mm.<br />
<br />
[[Datei:Philips_VP5500.jpg]]<br />
<br />
= Hardware =<br />
* MCU: Freescale MC9328MX21 (ARM9) @ 266MHz<br />
* PC-to-TV-Konverter-Chip: FS455LF<br />
* WLAN: Marvell 88w8385, als Modul von WM-G-MR-01 (VP5500) / Philips BGW211, on-board (VP6500)<br />
* SDRAM: 2 x K4S56163LF - 4M x 16Bit x 4 Banks<br />
* 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<br />
* Kamera: dc-4626.a5 by chicony<br />
* Display: Samsung LTS220QC (HD66772 Controller)<br />
<br />
== System-Takte ==<br />
# cat /proc/systclk<br />
System clocks state:<br />
Ref clock : 32768Hz (int, premult by 512)<br />
MPLL clock: 263999905Hz (computed: 264000000Hz)<br />
SPLL clock: 163840000Hz (computed: 163840000Hz)<br />
CPU clock : 263999905Hz (PERSC = 0)<br />
Bus clock : 132000000Hz (BCLKDIV = 1, computed: 131999952Hz)<br />
CSI clock : unknown (cannot read register CSICR1)<br />
USB clock : 20480000Hz (USB_DIV = 7)<br />
Wait State: CS0U[WSC] = 10, CS0U[WSC] = 48<br />
loops_per_jiffy = 665058<br />
<br />
= Innenleben =<br />
<gallery widths="240" ><br />
<br />
Datei:Oberseite.jpg | Ansicht der Oberseite<br />
Datei:Oberseite_beschriftet.jpg | Oberseite mit Beschriftung der Bauteile<br />
Datei:Drumherum.jpg | Übersicht über die Komponenten<br />
</gallery><br />
<br />
<gallery widths="240" ><br />
Datei:Kontakte_Oberseite.jpg | UART-Schnittstelle Oberseite<br />
Datei:Kontakte_Unterseite.jpg | JTAG-Schnittstelle Unterseite<br />
</gallery><br />
<br />
<br />
== Testpins ==<br />
Original Liste von [http://www.mikrocontroller.net/topic/170483#1646514 Tino] [[Media:Philips vp5500 Liste Testpins.pdf|herrunterladen]].<br />
<br />
[[Bild:Philips vp5500 testpins 1.jpg|thumb| Testpins auf der Rückseite]]<br />
[[Bild:Philips vp5500 testpins 2.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]<br />
<br />
{| class="wikitable"<br />
! Testpin Nr. !! verbunden zu !! Funktion<br />
|-<br />
| 1 || LED || unbekannt<br />
|-<br />
| 2 || Kamera Pin 8 an CN1 || unbekannt<br />
|-<br />
| 3 || Pin 4 an IC1 || unbekannt<br />
|-<br />
| 4 || z.B. IC5 Pin V 18 || VDDA<br />
|-<br />
| 5 || GND || GND<br />
|-<br />
| 6 || NC || NC<br />
|-<br />
| 7 || Pin E 16 an IC5 || SAP_CLK<br />
|-<br />
| 8 || Pin 1 an CN 3 || Lautsprecher<br />
|-<br />
| 9 || Pin 2 an CN 3 || Lautsprecher<br />
|-<br />
| 10 || Pin an CN 4 || ?<br />
|-<br />
| 11 || Pin an CN 4 || ?<br />
|-<br />
| 12 || Pin an CN 4 || ?<br />
|-<br />
| 13 || Pin L 16 an IC5 || UART2_TXD<br />
|-<br />
| 14 || Pin C 12 an IC5 || USBH1_RXDM<br />
|-<br />
| 15 || Pin H 12 an IC5 || USBH1_TXDP<br />
|-<br />
| 16 || Pin B 19 an IC5 || CSPI2_SS2<br />
|-<br />
| 17 || Pin B16 an IC5 || SSI2_FS<br />
|-<br />
| 18 || Pin F 18 an IC5 || KP_ROW0<br />
|-<br />
| 19 || Pin K 18 an IC5 || KP_COL4<br />
|-<br />
| 20 || Pin L 19 an IC5 || UART3_TXD<br />
|-<br />
| 21 || Pin T 14 an IC5 || RESET_IN<br />
|-<br />
| 22 || geht an + des Kondensators neben IC6 || unbekannt<br />
|-<br />
| 23 || Pin D 13 an IC 9 || CLKOUT<br />
|-<br />
| 24 || Pin E 13 an IC 9 || CLKIN_P<br />
|-<br />
| 25 || Pin A 9 an IC 9 || DAC_D<br />
|-<br />
| 26 || Pin A 8 an IC 9 || DAC_A<br />
|-<br />
| 27 || Pin A 7 an IC 9 || DAC_B<br />
|-<br />
| 28 || Pin A 6 an IC 9 || DAC_C<br />
|-<br />
| 29 || Pin L 13 an IC 5 || UART1_TXD<br />
|-<br />
| 30 || Pin T 16 an IC 5 || BOOT1<br />
|-<br />
| 31 || Pin K 10 an IC 5 || UART1_RXD<br />
|-<br />
| 32 || Pin U 17 an IC 5 || BOOT2<br />
|-<br />
| 33 || Pin 9 an IC 23 || unbekannt<br />
|-<br />
| 34 || Pin D 19 an IC5 || CSPI2_SCLK<br />
|-<br />
| 35 || Pin C 14 an IC5 || TIN<br />
|-<br />
| 36 || Pin C 19 an IC5 || CSPI2_SS1<br />
|-<br />
| 37 || Pin D 18 an IC5 || CSPI2_SS0<br />
|-<br />
| 38 || Pin E 19 an IC5 || CSPI2_MOSI<br />
|-<br />
| 39 || Pin H 19 an IC5 || PWMO<br />
|-<br />
| 40 || Pin J 9 an IC 7 und IC 8 || VDD<br />
|-<br />
| 41 || Pin J 19 an IC 5 || KP_COL2<br />
|-<br />
| 42 || Pin K 16 an IC 5 || KP_COL3<br />
|-<br />
| 43 || Pin J 11 an IC 5 || KP_ROW2<br />
|-<br />
|44 || Pin J 17 an IC 5 || KP_COL1<br />
|-<br />
|45 || Pin G 19 an IC 5 || KP_ROW4<br />
|-<br />
|46 || Pin G 17 an IC 5 || KP_ROW3<br />
|-<br />
|47 || Pin D 5 an IC 10 und IC 11 || ACC<br />
|-<br />
|48 || Pin G 16 an IC 5 || KP_ROW1<br />
|-<br />
|49 || Pin J 18 an IC 5 || KP_COL0<br />
|-<br />
|50 || Pin V 18 an IC 5 || VDDA<br />
|-<br />
|51 || Pin 2 an CN KB-Stecker || ?<br />
|-<br />
|52 || Pin 2 an IC 15 || ?<br />
|-<br />
|53 || Pin 4 am LCD Stecker || ?<br />
|-<br />
|54 || Pin E 17 an IC 5 || CSPI2_MISO<br />
|-<br />
|55 || Pin 1,2,3,10,13 am LCD Stecker || ?<br />
|-<br />
|56 || Pin 3 an IC 16 || ?<br />
|-<br />
|57 || Pin U 10 an IC 5 || PC_PWRON<br />
|-<br />
|58 || Pin 1 IC 18 || ?<br />
|-<br />
|59 || an Diode über IC 16 || ?<br />
|-<br />
|60 || Pin 3 an IC 25 || ?<br />
|-<br />
|61 || Ladekontakt positiv || Ladegerät +<br />
|-<br />
|62 || GND || GND<br />
|-<br />
|63 || Akku Mittelkontakt || Akkustand? Temperatur?<br />
|-<br />
|64 || Transistor unter IC 16 || ?<br />
|-<br />
|65 || Pin 2 an IC 22 || ?<br />
|-<br />
|66 || Pin 1,12,30 an IC 24 || VSS<br />
|-<br />
|67 || Kondensator + unter IC 20 || ?<br />
|-<br />
|68 || Pin 5 an IC 21 || ?<br />
|-<br />
|69 || Pin 2 an IC 4 || ?<br />
|-<br />
|70 || Pin 25 an IC24 || MCLK<br />
|-<br />
|71 || Prozessor Pin W 14 || QVDD<br />
|}<br />
<br />
== UART ==<br />
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren.<br />
Jedoch startet dann das Telefon nicht vollständig (Fix siehe [[#Betrieb mit aktiverter serieller Schnittstelle]])<br />
<br />
* Spannungs-Pegel: 3.3V<br />
* Baudrate: 115200kbps<br />
* Stopbits: 1<br />
* Flussteuerung: keine<br />
=== VP5500 ===<br />
[[Bild:VP5500_seriell_highlight.svg|100px|UART-Pins VP5500(Frontseite der Platine)]]<br />
<br />
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br />
<br />
=== VP6500 ===<br />
[[Bild:VP5600-Serialport-Preliminary.jpg|100px|UART-Pins VP6500]]<br />
<br />
Die serielle Schnittstelle ist unter vom Akkufach aus zugänglich.<br />
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.<br><br />
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.<br />
<br />
== JTAG ==<br />
[[Bild:jtag.jpg Belegung der JTAG-Pins (Rückseite der Platine)]]<br />
<br />
= Hardware Modifikationen =<br />
== Zerlegen des Telefons ==<br />
<gallery><br />
Datei:01_offen_von_Hinten.JPG|1. Geöffnetes Akkufach<br />
Datei:02_Blende_entfernt.JPG|2. hintere Schwarze Blende entfernt<br />
Datei:03_Rückseite_entfernt.JPG|3. Schalenrückteil entfernt<br />
Datei:04_aufhebeln_Vorderteil.JPG|4. Druck nach außen<br />
Datei:05_vorderteil_entfernt.JPG|5. entferntes Vorderteil<br />
Datei:06_Elektronik_entfernt.JPG|6. entfernte Elektronik<br />
</gallery><br />
<br />
# das Akkufach muss geöffnet und schrauben entfernt werden<br />
# hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen<br />
#* 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.<br />
# nun kann einfach das rückseitige Schalenteil abgeschaubt werden<br />
# das Entfernen des Frontschalenteils ist etwas tricky<br />
#* von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten<br />
#* etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.<br />
#* 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.<br />
#* Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritsich, wenn der Bügel ein wenig anbricht)<br />
# Die Platine zu entfernen ist nicht ganz so schwierig.<br />
#* zuerst die Seite auf der keine Knöpfe sind<br />
#* vorichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten <br />
#* dann versuchen die Paltine seitlich nach oben aus dem Gehäuse zu ziehen<br />
#* dabei auf das Lautsprecherkabel und den Kamerakonnektor achten<br />
# Zusammenbau genauso, nur umgedreht ;)<br />
#* nicht die Lautsprecher- und Kamera-Stecker vergessen<br />
<br />
== Buchse für Uart einbauen ==<br />
<gallery><br />
Datei:10_Pins.JPG|1. unbearbeitete Pinreihe<br />
Datei:11_Pins_bearbeitet.JPG|2. präperierte Pinreihe<br />
Datei:09_Pads.JPG|3. präperierte Pads<br />
Datei:12_Pins_ausrichten.JPG|4. Pinreiheausrichten<br />
Datei:13_Pins_angelötet_1.JPG|5. angelötete Pinreihe<br />
Datei:14_Pins_angelötet_2.JPG|6. angelötete Pinreihen<br />
Datei:08_Mittelteil.JPG|7. Mittelteil mit ausgefeiltem Loch<br />
Datei:15_Mittelteil_zusammengebaut.JPG|8. wieder zusammengesteckt<br />
Datei:16_in_Aktion.JPG|9.verbundene serielle Schnittstelle<br />
</gallery><br />
<br />
Zunächst muss das Telefon zerlegt werden ([[#Zerlegen des Telefons]])<br />
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. <br />
<br />
# Hierfür habe ich einreihige gedrehte IC-Sockel genutzt <br />
# deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)<br />
# ebendso auf die Pads ein wenig eingezinnt<br />
# ausrichten und festlöten<br />
# eine Reihe<br />
# die zweite Reihe<br />
# 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.<br />
# fertig<br />
# und im Einsatz<br />
<br />
= Das VPx500 'rooten' =<br />
<br />
Um Zugang zu den Dateien auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten<br />
<br />
# serielle Schnittstelle<br />
# telnet<br />
<br />
telnet ist der komfortablere Weg. Um telnet zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf den Updateserver von KPN zuzugreifen (den es nicht mehr gibt). Glücklicherweise geschieht dies nicht über eine feste IP, sondern über einen Hostnamen, so dass man an dieser Stelle sich durch einen eigenen DNS den Domainname auf einen eigenen Server umleiten kann. Daher ist im eignenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte 'Static DNS', ..).<br />
Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.<br />
<br />
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:<br />
<br />
telnet 123.456.789.012<br />
# <br />
<br />
Passwort ist "toor".<br />
Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.<br />
<br />
Unter Applications>Registration sind Netzwerk- und VoIP-Einstellungen zu finden.<br />
<br />
== Anleitung für Fritz-Box-Benutzer ==<br />
Die Fritzboxen bieten bisher leider keine Möglichkeit, den verwendeten DNS<br />
direkt im Webinterface zu ändern, über Umwege geht es aber doch:<br />
* Über das Webinterface der Fritzbox die Einstellungen sichern<br />
* Exportdatei im Texteditor öffnen (am besten nicht Notepad, da der die Unix-Zeilenumbrüche nicht versteht - zur Not geht auch Wordpad)<br />
* nach overwrite_dns1 suchen (gibt es zwei mal) und da den DNS 84.38.68.30 oder 188.40.123.50 eintragen<br />
* am Anfang der Exportdatei VOR "**** CFGFILE:ar7.cfg" eine Zeile 'NoCheck = yes' einfügen, damit die Fritzbox die nun nicht mehr passende Checksumme ignoriert.<br />
* Einstellungen zurück in die Fritzbox übertragen.<br />
<br />
Wenn die Telefone entsperrt sind, den DNS wieder entfernen (Es ist<br />
vielleicht eine ganz gute Idee, wenn man da zwei unabhängige DNS-Server<br />
einträgt, so umgeht man auch gleich providerseitige DNS-Sperren)<br />
<br />
= Voice over IP (VoIP, SIP) =<br />
<br />
*http://de.wikipedia.org/wiki/IP-Telefonie<br />
*http://de.wikipedia.org/wiki/Session_Initiation_Protocol<br />
*http://de.wikipedia.org/wiki/H.323<br />
*http://de.wikipedia.org/wiki/Softphone<br />
<br />
Benutzer ist 103<br />
<br />
Mit Ekiga konnte so per 103@xxx.xxx.xxx.xxx eine Sprachverbindung zum Telefon aufgebaut werden.<br />
<br />
= Software Modifikationen =<br />
== Vorsicht Fallen ==<br />
Es ist nicht schwer, sich den Zugang zum Telefon abzuschneiden, wenn man nicht aufpasst.<br />
=== Startscripten ===<br />
Die Scripten in /etc/rc.d/" müssen im Hintergrund laufen. Tut ein Script das nicht, ist an dieser Stelle Schluß mit dem Bootvorgang.<br />
== Grundlagen ==<br />
Bestimmte Aktionen werden immer wieder benötigt.<br />
Diese sollen hier kurz beschrieben werden.<br />
<br />
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.<br />
<br />
=== Dateien bearbeiten mit vi===<br />
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können.<br />
Für eine genaue Bedienung bitte Google benutzen.<br />
Die wichtigsten Bedienelemente werden hier kurz erläutert.<br />
<br />
Datei Öffnen mit 'vi Dateipfad'<br />
vi kennt zwei Modi: Kommando- und Einfüge-Modus.<br />
i - wechselt in den Einfüge-Modus, in dem geschrieben werden kann<br />
<br />
[Esc] wechselt zurück in den Kommandomodus. <br />
In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.<br />
:x - löscht das Zeichen an Cursor position<br />
:dd - löscht die ganze zeile<br />
:<nowiki>:</nowiki>q! - schließt ohne zu speichern<br />
:<nowiki>:</nowiki>w - speichert<br />
:<nowiki>:</nowiki>wq - speichert und beenden<br />
<br />
=== Dateien auf das Telefon laden ===<br />
Um Daten von einem http-Server zu laden, benutzt man <br />
wget url<br />
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.<br />
<br />
Um Daten von einem ftp-Server zu laden, benutzt man ftp.<br />
Auch hier muss vorher in das zielverzeichnis gewechselt werden.<br />
ftp hostname<br />
dann gegebenenfalls die Zugangsdaten eingeben und mittels 'cd' und 'ls' in das Entsprechende Verzeichnis auf dem FTP-Server wechseln<br />
und anschließend mittels <br />
get dateiname<br />
die Datei herunterladen.<br />
<br />
=== Dateien vom Telefon herunterladen ===<br />
Auch hier bietet sich ein FTP an.<br />
Mittels 'ftp hostname' verbinden, Benutzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels<br />
put localeDatei<br />
eine Lokale Datei hochladen.<br />
<br />
=== Alternative Dropbear ===<br />
<br />
Wurde der dropbear-ssh server installiert [[#Dropbear (SSH-Server) installieren]] können mittels eines Programms mit SCP-Unterstützung (zB. [http://winscp.net/eng/docs/lang:de WinSCP] für Windows) sehr komfortabel Dateien ausgetauscht werden.<br />
<br />
Mit WinSCP können auch Dateien direkt bearbeitet werden.<br />
Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.<br />
<br />
== Backup ==<br />
=== Backup des Flash ===<br />
If you want to make a backup of your root partition, you can do as<br />
follows:<br />
<br />
<c><br />
echo '#!/bin/sh' > /tmp/backup.sh<br />
echo 'cat /dev/mtdb2 2>/dev/null' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
micro_inetd 31337 /tmp/backup.sh<br />
</c><br />
<br />
This'll make your device listen for incoming connections on port 31337.<br />
On your host system you may then simply run <br />
nc ip.of.your.phone 31337 > fon_rootfs<br />
et voilà, you got your rootfs packed into a file.<br />
<br />
Note that the backed up file is not ext2, but a jffs2 formatted<br />
filesystem. These can't be handled by a simple "mount -o loop" as you'd<br />
have thought... so here's how you mount it:<br />
<br />
<c><br />
modprobe jffs2<br />
modprobe mtdram total_size=32768 erase_size=128<br />
modprobe mtdblock<br />
mkdir /tmp/phone-root<br />
mknod /tmp/phone-mtdb2 b 31 0<br />
dd if=/your/backup/file of=/tmp/phone-mtdb2<br />
mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root<br />
</c><br />
<br />
[[#Dateisystem herunterladen]] describes another way to dump the filesystem for closer examination.<br />
<br />
=== Komplettes Backup ===<br />
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.<br />
<br />
cd /etc/rc.d/init.d<br />
wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe<br />
chmod +x /etc/rc.d/init.d/S91backup_pipe<br />
<br />
Damit wird eine Art Backup-Server mit dem Boot gestartet.<br />
wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.<br />
<br />
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:<br />
<br />
nc 192.168.1.3 31337 > fon_rootfs<br />
nc 192.168.1.3 31338 > fon_udata<br />
nc 192.168.1.3 31339 > fon_usettings<br />
nc 192.168.1.3 31340 > fon_bootld<br />
nc 192.168.1.3 31341 > fon_kernel<br />
<br />
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_*<br />
Dateinamen könnt ihr natürlich auch frei vergeben.<br />
<br />
fon_udata ist die /user_data Partition, fon_usertings dementsprechend<br />
die /user_settings Partition.<br />
<br />
Der bootld Bereich enthält auch die Parameter. Um das später (falls<br />
überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in<br />
zwei Teile aufgeteilt werden. Der erste enthält dann den reinen<br />
Bootloader-Bereich, der zweite die Parameter. Wer's wirklich braucht für<br />
den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll<br />
ist das aber nicht, hat man den Bootloader erstmal mit was anderem<br />
überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen<br />
benutzen....<br />
<br />
=== Zurückspielen der Backups ===<br />
<br />
1) Man braucht ein (die) Backup-Image(s).<br />
<br />
2) Serielle Verbindung zum Telefon<br />
<br />
3) Akku abstecken, wieder anstecken.<br />
<br />
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so<br />
das man im Bootloader landet. Dabei muss man recht schnell sein. Es<br />
sollte dann ein Prompt kommen:<br />
<br />
<c><br />
blob><br />
</c><br />
<br />
5) Nun gibt man ein <br />
xdownload param<br />
Wobei 'param' der Teil ist, den man wiederherstellen will:<br />
* blob - Bootloader (fon_bootld)<br />
* param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)<br />
* kernel - Der Kernel (fon_kernel)<br />
* ramdisk - Das Root-Filesystem / (fon_rootfs)<br />
* ramdisk2 - Das /user_data Filesystem (fon_udata)<br />
* ramdisk3 - Das /user_settings Filesystem (fon_usettings)<br />
<br />
Beim Backup ist blob + param in einer Datei, müsste man also ggf.<br />
erstmal aufsplitten.<br />
<br />
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den<br />
Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.<br />
<br />
7) Kaffee trinken, auf's Klo gehen, mit Frau/Freundin/Mutter ein Gespräch<br />
anfangen.<br />
<br />
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet<br />
wieder am "blob>" prompt. Nun gibt man<br />
flash param<br />
ein.<br />
<br />
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.<br />
<br />
10) "boot" eingeben. Da Telefon bootet nun normal.<br />
<br />
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das<br />
Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt<br />
man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle<br />
abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten<br />
(Akku kurz ab- und wieder anstöpseln)<br />
<br />
=== Dateisystem herunterladen ===<br />
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.<br />
<br />
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:<br />
<br />
<c><br />
echo '#! /bin/sh' > /tmp/backup.sh<br />
echo 'cd /' >> /tmp/backup.sh<br />
chmod 700 /tmp/backup.sh<br />
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<br />
micro_inetd 31340 /tmp/backup.sh<br />
</c><br />
<br />
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.<br />
<br />
Auf einem anderen Linux system (oder cygwin) kann mittels<br />
<c><br />
nc telefon-Ip 31340 > file.tar<br />
</c><br />
die Datei abgerufen werden.<br />
<br />
Der Vorgang dauert aber ein ganz paar Minuten.<br />
<br />
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.<br />
<br />
== Betrieb mit aktiverter serieller Schnittstelle ==<br />
<br />
Das 5500 scheint nicht komplett zu starten wenn man TIN auf low hat<br />
und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei<br />
<br />
/usr/local/startup/daemon.sh<br />
<br />
ziemlich am Anfang das TINDETECT="TRUE" ändert auf TINDETECT="FALSE"<br />
<br />
Danach startet er auch mit aktiver serieller Verbindung komplett durch<br />
und das Gerät ist ganz normal bedienbar.<br />
<br />
<br />
<br />
== Aktivierung WPA2 Unterstützung ==<br />
<p>Standardmäßig kann das Telefon nur WPA, dabei unterstützt es allerdings auch <b>WPA mit AES</b> Verschlüsselung.</p><br />
<p>Es gibt zwei verschiedene Tricks mit denen auch WPA2 aktiviert werden kann.<br />
Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).</p><br />
<br />
=== Trick1 ===<br />
Mittels<br />
vi /etc/marvell/wpa_supplicant.conf<br />
den Texteditor starten.<br />
Mit PageDown (Bild runter) bis zum Ende des Files gehen.<br />
Die Zeilen <br />
proto=WPA<br />
pairwise=TKIP<br />
group=TKIP<br />
auskommentieren, indem ein # vorangestellt wird:<br />
* cursor auf Beginn einer Zeile <br />
* i drücken zum Einfügen<br />
* # eintippen<br />
* [Esc]<br />
Sind alle Zeilen auskommentiert, dann mittels<br />
:wq[enter]<br />
abspeichern und Editor verlassen.<br />
<br />
Danach neu booten.<br />
<br />
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)<br />
<br />
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.<br />
<br />
Wichtige Info von airmack via IRC:<br />
<br />
'''Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf <u>hinten anzuhängen</u>, niemals aber vorne einzufügen!'''<br />
<br />
=== Trick2 ===<br />
Dieser Trick funktioniert mit Accesspoints, bei denen man auch WPA Verbindungen mit AES verschlüsseln kann. Vorteil dieses Tricks ist, dass man die wpa_supplicant.conf nicht manuell editieren muss. Allerdings unterstützt nicht jeder Accesspoint WPA mit AES (aber dd-wrt kann das).<br />
<br />
Man konfiguriert den Accesspoint zunächst mit WPA PSK und wählt AES als Verschlüsselungsalgorithmus. Jetzt meldet man das Telefon an, das Telefon erkennt richtig, dass eine WPA Verbindung vorliegt und verbindet sich per WPA und AES mit dem Accesspoint. Anschliessend konfiguriert man den Accesspoint von WPA PSK AES nach WPA2 PSK AES. Jetzt schaltet man das VP5500/6500 aus und wieder ein. Nachdem es fertig gebootet hat, verbindet es sich automisch per WPA2 PSK und mit AES Verschlüsselung. Fertig.<br />
<br />
== Menüs ==<br />
=== Hauptmenu ===<br />
<br />
Das File <br />
/usr/local/etc/defaultbuttons.conf<br />
enthält unter anderm die definition des Hauptmenus.<br />
<br />
Hierfür ist der Abschnitt Menu besonders interessant.<br />
[Menu]<br />
1 = Applications/camera.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications<br />
4 = Settings<br />
5 = Applications/addressbook.desktop<br />
6 = Settings/RingProfiles.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 2<br />
<br />
'Rows' und 'Columns' geben an, wieviel Reihen und Spalten das Hauptmenu hat.<br />
Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen.<br />
Die Menupunkte sind definiert in den Verzeichnissen unter <br />
/usr/local/apps<br />
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist.<br />
direkte Menupunkte haben Dateinamen mit der Endung .desktop<br />
'Default' bestimmten vorselektierten Eintrag.<br />
<br />
Hier ein weiteres Beispiel für ein angepasstes Menu:<br />
[Menu]<br />
1 = Applications/addressbook.desktop<br />
2 = Applications/callhistory.desktop<br />
3 = Applications/sysinfo.desktop<br />
4 = Applications<br />
5 = Settings<br />
6 = Games<br />
7 = Applications/camera.desktop<br />
8 = Applications/photoedit.desktop<br />
9 = Applications/manualsub.desktop<br />
Columns = 3<br />
Default = 5<br />
Map = 123456789*0#<br />
Rows = 3<br />
<br />
Der Ordner Games ist (momentan ;) leer.<br />
<br />
=== Genereller Aufbau Menü-Einträge===<br />
Die Einträge für die Menüs sind im Filesystem abgelegt:<br />
<br />
* Settings: /usr/local/apps/Settings<br />
* Applications: /usr/local/apps/Applications<br />
* Klingeltöne: /usr/local/etc/SystemRingTones/<br />
<br />
Die Dateien haben die Endung ".desktop" und sind normale Textdateien, die die relevanten Infos enthalten.<br />
<br />
Ein Beispiel aus dem Settingsordner:<br />
[Translation]<br />
File=QtopiaSettings<br />
Context=Sound<br />
[Desktop Entry]<br />
Type=Application<br />
Exec=sound<br />
Icon=Sound<br />
Name[]=Sound<br />
CanFastload=0<br />
<br />
Der Abschnitt 'Translation' gibt an in welchem File, die Lokalisationsdaten stehen.<br />
<br />
Der Abschnitt 'Desktop Entry':<br />
* Type: Typ des Eintrages <br />
** Application für Anwendungen<br />
** audio/x-wav für Klingeltöne<br />
* Exec: Anwendung, die ausgeführt werden soll<br />
* Icon: Icon, das im Menü benutzt wird. <br />
** Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png<br />
** manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png<br />
* 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<br />
<br />
Hier ein Textfile mit allen desktop-Files als Referenz: [[File:alleDesktopFiles.txt]]<br />
<br />
=== Versteckte Menüeinträge ===<br />
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung '.desktopMASK'.<br />
Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschalten.<br />
<br />
folgendes an der Kommandozeile eingeben:<br />
cd /usr/local/apps/Settings<br />
mv datetime.desktopMASK datetime.desktop<br />
mv callforward.desktopMASK callforward.desktop<br />
mv calloptions.desktopMASK calloptions.desktop<br />
mv resetparam.desktopMASK resetparam.desktop<br />
mv subkpncode.desktopMASK subkpncode.desktop<br />
<br />
Dies aktiviert folgende Optionen:<br />
* Datums/Zeit-Einstellung<br />
* Anrufweiterleitung<br />
* Anrufoptionen<br />
* Parameter zurücksetzen<br />
* Number Switch<br />
<br />
<br />
Die nützlichsten sind wohl die ersten Einträge.<br />
Bei dem "Number Switch" ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.<br />
<br />
<br />
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine [[File:demomode.desktop]] anlegen.<br />
<br />
Hierfür ist folgende Prozedur nötig:<br />
* im Terminal<br />
cd /usr/local/apps/Applications<br />
vi demomode.desktop<br />
<br />
* i drücken <br />
* folgendes Textfragment einfügen <br />
[Translation]<br />
File=QtopiaApplications<br />
Context=DemoMode<br />
[Desktop Entry]<br />
Exec=demomode<br />
Icon=Camera<br />
Type=Application<br />
Name[]=DemoMode<br />
* [Esc] <br />
* :wq [Enter] <br />
<br />
Dies schaltet einen Demo-Modus frei.<br />
<br />
=== Französisch ===<br />
Es gab die Geräte wohl auch in Frankreich von der France Telekom.<br />
Zumindest sind entsprechende monitor und upgrade Referenz-Dateien<br />
vorhanden in denen das steht. Daher wohl auch die Französischen<br />
Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem<br />
Unterverzeichnis, so das sie nicht auswählbar sind.<br />
<br />
Um diese Dateien zu aktivieren:<br />
<br />
cd /usr/local/i18n<br />
mv NOTUSED/fr .<br />
<br />
Nun ist auch noch französisch als Sprache verfügbar.<br />
<br />
== Grafische Anpassungen ==<br />
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).<br />
<br />
Einige besonders interessante werden hier aufgeführt:<br />
<br />
=== Eigene Startup/Shutdown-Animation ===<br />
<br />
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in<br />
<br />
/usr/local/pics/qpe<br />
<br />
Die Links "splash.gif" und "goodbye.gif" zeigen auf die tasächlich zu verwendenen Dateien ("splash-chuck.gif", "goodby-chuck.gif").<br />
Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die<br />
splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte<br />
mit:<br />
<br />
rm /usr/local/pics/qpe/splash.gif<br />
<br />
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die<br />
eigene Datei:<br />
<br />
ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif<br />
<br />
Danach wird dann bei jedem Neustart die eigene Animation angezeigt.<br />
Analog hierzu mit der goodbye.gif.<br />
<br />
<br />
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet<br />
anmelden und:<br />
<br />
<c><br />
cd /usr/local/pics/qpe/<br />
wget http://dein.server/woauchimmer/Matrix5.gif<br />
rm /usr/local/pics/qpe/splash.gif<br />
ln -s Matrix5.gif splash.gif<br />
</c><br />
<br />
Die GIF Animation kann bis zu 176x220 Pixel groß sein.<br />
Kleinere (möglicherweise auch größere) Bilder werden zentriert.<br />
<gallery><br />
Bild:walking_baby_tux.gif<br />
Bild:custwakeup2.gif<br />
Bild:custgoodbye2.gif<br />
Bild:94vw4.gif<br />
Bild:1_Matrix--16984.gif<br />
Bild:1_Matrix--16985.gif<br />
Bild:3.gif<br />
Bild:ClanSpider2.gif<br />
Bild:TS12.gif<br />
Bild:Matrix5.gif<br />
Bild:qtopia3.gif<br />
Bild:qtopia0.gif<br />
</gallery><br />
<br />
=== Eigener Boot/Update-Screen ===<br />
<br />
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.<br />
/user_data/data/welcome.rgb565<br />
/usr/local/startup_V4.20/update.bin<br />
<br />
Weitere Beispielbilder:<br />
/user_data/prod/data/lcd_test_card1.bin<br />
/user_data/prod/data/lcd_test_card2.bin<br />
<br />
Diese werden direkt in den Framebuffer geschrieben.<br />
Daher müssen sich diese genau ein bestimmtes Format halten: <br />
* Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)<br />
* 16bit pro Pixel RGB565<br />
<br />
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:<br />
# Ein Bild in Gimp mit 176x220 erstellen<br />
# das Bild vertikal spiegeln<br />
# Bild->Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)<br />
# Datei->Kopie speichern...<br />
# Als Windowsbitmap -> erweiterete Optionen -> 16bit R5G6B5<br />
# BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)<br />
tail -c 105600 input.bmp > output.raw<br />
<br />
<br />
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.<br />
cat /user_data/prod/data/lcd_test_card1.bin > /dev/fb0<br />
<br />
== Wichtige Verzeichnisse ==<br />
<br />
=== Adressdaten ===<br />
<br />
# cat /user_data/home/Applications/addressbook/addressbook.xml <br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Addressbook ><AddressBook><br />
<Groups><br />
</Groups><br />
<Contacts><br />
<Contact<br />
Uid="-1269720893" <br />
Categories="-1269431263;-1266109093;-1266109094" <br />
FirstName="ich" <br />
FileAs="ich" <br />
JobTitle="cc" <br />
Department="dep"<br />
Company="aa" <br />
BusinessPhone="55" <br />
BusinessFax="77" <br />
BusinessMobile="66" <br />
HomePhone="55"<br />
HomeMobile="11" <br />
HomePc="12"<br />
HomeData="13"<br />
HomeFax="14"<br />
BusinessStreet="street"<br />
BusinessCity="city"<br />
BusinessState="state"<br />
BusinessZip="zip"<br />
BusinessCountry="country"<br />
BusinessPager="88"<br />
Office="office"<br />
Profession="prof"<br />
Assistant="ass"<br />
Manager="man"<br />
HomeStreet="ptjml"<br />
HomeCity="cit"<br />
HomeState="stat"<br />
HomeZip="zi"<br />
HomeCountry="coun"<br />
Spouse="spouse"<br />
Gender="1"<br />
Birthday="20100322"<br />
Anniversary="20100429"<br />
Children="child"<br />
Notes="gakm"<br />
CompanyPronunciation="bb"<br />
BUSINESS_CONTACT=""<br />
photofile="ci-1269721575-0.jpg"<br />
qdl-private-data=""<br />
tone="/usr/local/etc/SystemRingTones/16-Tetris.desktop"<br />
/><br />
<Contact Uid="-1269554029" <br />
FirstName="VoIP" <br />
LastName="Phone1" <br />
FileAs="VoIP Phone1" <br />
HomeMobile="**621" <br />
tone="/usr/local/etc/SystemRingTones/15-Techno2.desktop" /><br />
<Contact Uid="-1269554032" <br />
Categories="-1269431263"<br />
FirstName="VoIP" <br />
LastName="Phone3" <br />
FileAs="VoIP Phone3" <br />
HomeMobile="**623" <br />
BUSINESS_CONTACT="" <br />
qdl-private-data="" <br />
tone="/usr/local/etc/SystemRingTones/08-Celtrelax.desktop" /><br />
</Contacts><br />
</AddressBook><br />
<br />
UID ist wohl egal, solange sie nicht zweimal vorkommen.<br />
<br />
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben<br />
"maxEntries = 500" in der "Contacts.conf"<br />
<br />
Die Kategorien stehen in /user_settings/Categories.xml:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE CategoryList><br />
<Categories><br />
<Category id="-1269431263" name="_Personal" /><br />
<Category id="-1269431262" name="_Business" /><br />
</Categories><br />
<br />
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".<br />
<br />
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!<br />
<br />
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).<br />
<br />
=== Fotos & Videoschnappschüsse ===<br />
<br />
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:<br />
/user_data/home/Documents<br />
<br />
Die Bilder sind dabei nach folgendem Namensschema benannt:<br />
<br />
DD-MM-YYYY-hh:mm:ss.jpg<br />
<br />
Tag (DD) und Monat (MM) können auch einstellig sein.<br />
<br />
== Klingeltöne ==<br />
<br />
Die Klingeltöne liegen, wie oben beschrieben unter:<br />
<br />
/usr/local/etc/SystemRingTones/<br />
<br />
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich, z.B. mit MhWaveEdit (Linux/GTK) recht komfortabel erzeugen lassen.<br />
<br />
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird.<br />
Eine für den fiktiven 16. Klingelton erzeugte Datei "16-Tetris.desktop" könnte den folgenden Inhalt haben:<br />
<br />
[Desktop Entry]<br />
Categories =<br />
File =16-Tetris.wav<br />
Name[] =16-Tetris<br />
Type = audio/x-wav<br />
[Translation]<br />
File=QtopiaRingTones<br />
Context=16-Tetris<br />
<br />
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.<br />
<br />
<br />
=== Timeserver ===<br />
<br />
http://www.mikrocontroller.net/topic/170483#1645101<br />
Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg<br />
die Adressen der Zeitserver "ntp.xs4all.nl" und "130.142.110.71". Diese<br />
könnte man z.B. auf "ptbtime1.ptb.de" und "ptbtime2.ptb.de" ändern.<br />
<br />
(http://www.mikrocontroller.net/topic/170483#1649594)<br />
das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 -<br />
chronos.zedat.fu-berlin.de kann man als server nehmen.<br />
<br />
== Zusätzliche Software ==<br />
=== Dropbear (SSH-Server) installieren ===<br />
<br />
# Mit telnet auf dem Gerät einloggen<br />
# folgendes in die Kommandozeile kopieren<br />
cd /<br />
wget http://vp6500.bd8.nl/bin/dropbear.tgz<br />
tar -xzf dropbear.tgz<br />
rm dropbear.tgz<br />
cd /etc/rc.d/init.d<br />
mv dropbear S90dropbear<br />
./S90dropbear start<br />
Kommando 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch<br />
gestartet wird.<br />
<br />
=== Nano 2.2.3 installieren ===<br />
<br />
* Mit telnet auf dem Gerät einloggen<br />
* folgendes in die Kommandozeile kopieren<br />
cd /usr/bin<br />
wget http://www.mikrocontroller.net/attachment/74023/nano<br />
* Mit folgendem Befehl den Editor ausführbar machen:<br />
chmod +x /usr/bin/nano<br />
* Nun ist vi Geschichte ;-)<br />
<br />
= SIP Einstellungen =<br />
<br />
== Einstellung für 1und1 ==<br />
<br />
* SIP1:<br />
** Display Name: ...<br />
** Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Telephone Number: 0#VORWAHLOHNE0#NUMMER#<br />
* Auth:<br />
** Auth Username: 49#VORWAHLOHNE0#NUMMER#<br />
** Password: *********<br />
* Server:<br />
** sip.1und1.de:5060<br />
* Proxy:<br />
** sip.1und1.de:5060<br />
* RTP:<br />
** 30000 und 30019<br />
* STUN:<br />
** stun.1und1.de<br />
* STUN Server Port:<br />
** 3478<br />
* SIP2:<br />
** UDP: 5060<br />
** TCP: 5060<br />
<br />
== Einstellung für Sipgate ==<br />
<br />
*SIP1<br />
**Display Name: Sipgate Username<br />
**User Name: your SIPgate-ID<br />
**Telephone Number: Sipgate-Telefonnummer<br />
*Auth<br />
**Authentification UserName: your SIPgate-ID<br />
**Password: Sipgate Passwort<br />
*Server<br />
**SIP register address:port: sipgate.de:5060<br />
*Proxy<br />
**SIP proxy1 address:port: sipgate.de:5060<br />
*SIP2<br />
**SIP Port Listen<br />
**for UDP: 5062<br />
**for TCP: 5062<br />
**for TCP TLS: 5053<br />
*STUN: [X] use rport<br />
<br />
SIP Outbound muss leer sein.<br />
<br />
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.<br />
<br />
== Einstellung für Ekiga.net ==<br />
<br />
*SIP1<br />
**Display Name: Irgendwas<br />
**User Name: username<br />
**Telephone Number: leer<br />
*Auth<br />
**Authentication User Name: username<br />
**Password: password<br />
*Server<br />
**SIP register: ekiga.net:5060<br />
**Protocol: ( ) TCP (*) UDP<br />
**Expire Timer: 3600<br />
**Keep Alive: 0<br />
*Proxy<br />
**alle leer<br />
*STUN<br />
**( ) use rport<br />
**STUN Server IP address: stun.ekiga.net<br />
**STUN Server port: 3478<br />
*SIP2<br />
**(*) Symmetric Mode<br />
**UDP: 5060<br />
**TCP: 5060<br />
**TCP TLS: 5061<br />
*OBproxy<br />
**alle leer<br />
<br />
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.<br><br />
Weitere features: https://www.ekiga.net/index.php?page=services<br><br />
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.<br> <br />
<p>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 <b>einen neuen Kontakt</b> (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 <b>[#]</b>-Taste des VP5500/6500 umschalten.</p><br />
<p>Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der <b>Video-Taste</b> auf der Tastatur des VP6500</p><br />
<br />
== Einstellung für Fritzbox 7170/7270 und andere mit SIP-Registrar ==<br />
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,<br> dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.<br> Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.<br><br />
<br><br />
Im Beispiel will die FB die Nummer 621 vergeben:<br><br />
'''Reiter SIP1'''<br><br />
Display Name: <leer lassen><br><br />
User Name: 621<br><br />
Telephone Number: 621<br><br />
<br><br />
'''Reiter Auth'''<br><br />
Authentication UserName: 621<br><br />
Password: [hier das gleiche, wie auf der FB eingeben]<br><br />
<br><br />
'''Reiter Server'''<br><br />
SIP register address:port<br><br />
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060<br><br />
Protocol: UDP<br><br />
ExpireTime: 3600<br><br />
Keep Alive: 300<br><br />
<br><br />
'''Anmerkungen dazu:'''<br><br />
Protokoll: UDP<br><br />
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.<br> <br />
Keep Alive: 300<br><br />
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen <br>wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so <br>aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.<br><br />
Anmeldung:<br><br />
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.<br> Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.<br><br />
<br />
Falls eure Fritz!Box keine Möglichkeit bietet, ein IP-Telefon anzumelden, empfehle ich euch mal in das http://wiki.ip-phone-forum.de/skript:speedport2fritz einzulesen.<br><br />
Bzw. mal im IP-Phone-Forum nach SIP-Registrar suchen.<br><br />
<br />
= Buildumgebung erstellen =<br />
<br />
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.<br />
<br />
== Windows ==<br />
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.<br />
<br />
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).<br />
<br />
=== Freetz-Linux ===<br />
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).<br />
Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.<br />
<br />
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus.<br />
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.<br />
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.<br />
<br />
Benutzername und alle Kennwörter sind 'freetz'<br />
<br />
==== Installation und Test der VP5500 Toolchain ====<br />
Installation der Buildumgebung:<br />
sudo mkdir /opt/VP5500<br />
sudo mkdir /opt/VP5500/toolchain<br />
cd /opt/VP5500/toolchain<br />
sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2<br />
sudo bunzip2 arm-linux-gcc-3.3.2.tar.bz2<br />
sudo tar -xf arm-linux-gcc-3.3.2.tar<br />
sudo rm arm-linux-gcc-3.3.2.tar<br />
sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm<br />
<br />
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.<br />
<br />
Test der Buildumgebung:<br />
cd ~<br />
wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz<br />
tar -xzf helloworld.tgz<br />
rm helloworld.tgz<br />
cd helloworld<br />
make<br />
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.<br />
<br />
==== Freetz-Linux eigentlicher Anwendungszweck ====<br />
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen.<br />
Folgende Schritte machen dies:<br />
cd ~<br />
svn checkout http://svn.freetz.org/trunk freetz-trunk <br />
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis 'freetz-trunk'.<br />
Konfigurieren mit 'make menuconfig' und Image erstellen mit 'make'.<br />
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.<br />
<br />
Für detailiertere Infos bitte direkt bei Freetz nachschlagen:<br />
http://trac.freetz.org/<br />
<br />
== Linux ==<br />
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.<br />
<br />
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.<br />
<br />
=== Hello World ===<br />
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.<br />
<br />
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von "make" compiliert.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung ===<br />
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).<br />
<br />
= Hardware + Software Versionen =<br />
<br />
Listet mal eure Hardware- und Softwareversion aus dem '''Applications''' => '''System Info''' Menü auf, wenn sie hier noch nicht stehen!<br />
<br />
== VP5500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|- <br />
| ind5 ||0645 || 4.20<br />
|- <br />
| ind5 ||0647 || 4.20<br />
|-<br />
| ind5 ||0648 || 4.20<br />
|-<br />
| ind5 ||0649 || 4.20<br />
|-<br />
| ind5 ||0702 || 4.20<br />
|}<br />
<br />
== VP6500 ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Hardware Version !! Date !! Software Version <br />
|-<br />
| ind3-v2 || 0711 || 3.22<br />
|-<br />
| ind3-v2 || 0713 || 3.22<br />
|- <br />
| ind3-v2 || 0716 || 3.22<br />
|}<br />
<br />
= Stromaufnahme =<br />
<br />
== VP5500 ==<br />
FIXME <br />
<br />
== VP6500 ==<br />
<br />
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). <br />
<br />
=== Messungen ===<br />
* Booten: bis zu 420mA<br />
* Einbuchen: ca. 400mA<br />
* mit abgeschaltetem Display, aber eingebucht und laufend (idle): ca. 80mA<br />
* mit angeschaltetem Display, eingebucht und idle: ca. 190mA<br />
* mit 100% Prozessor-Last (von serieller Konsole ausgeführt: "while true; do true; done"): ca. 60mA mehr als idle (Scheint aber auch größere Sprünge für andere CPU-Last zu geben)<br />
* im 'Deep Sleep' (wird ein paar Minuten nach Einschalten erreicht): <10mA (!), mit kurzen Wachphasen mit erheblichem Stromverbrauch (>100mA). Beachte: Die serielle Konsole ist in diesem Modus auch nicht mehr aktiv, das Telefon ist aber nicht abgestürzt (Tastendruck aktiviert die Konsole wieder).<br />
<br />
=== Ladegerät ===<br />
* Phone nicht in der Ladeschale: < 0.2W<br />
* Phone wird geladen: ca 4W</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=Compact_Plus_Blutzuckermessger%C3%A4t-Hardware&diff=42086Compact Plus Blutzuckermessgerät-Hardware2010-01-08T15:05:58Z<p>Dl3daz: /* Pinbelegung Mega168 */</p>
<hr />
<div>== Hardware ==<br />
== Übersicht Hardware ==<br />
* OLED Display 102×80 Pixel incl. 16 Helligkeitsstufen pro Pixel / SSD1325 /43x36 mm gesamt<br />
* Atmega168PA<br />
* DC/DC-Wandler (Regler und Drosseln)<br />
* IR-Sender/Empfänger<br />
* 3 Tasten (4 wenn man den Schließer der Klappe mitzählt)<br />
* 2 Elektromotoren<br />
* kleine Lichtschranke/Barcodescanner<br />
* kleines Spektrometer (2 * LEDs rot, IR(?)-LED, Fotodiode)<br />
* Betriebsspannung 3V (2*AAA)<br />
* SMD Piezo-Summer<br />
<br />
== Gerät als Ganzes ==<br />
[[Bild:compact_plus.jpg|400px]]<br />
<br />
Das unzerlegte Gerät. Ganz links ist die Stechhilfe.<br />
<br />
== Gerät zerlegen ==<br />
Das Gehäuse besteht aus drei ineinander einrastenden Teilen (keine Schrauben). Relativ schadlose Demontage durch vorsichtiges Aufhebeln möglich.<br />
Erst das Seitenteil (links) ganz oben und 2 cm von unten ausrasten.<br />
Von unten anfangen die Gehäusehälften zu lösen, bis man sie über die Oberkante aufklappen kann.<br />
<br />
Die Platine selbst ist mit 2 Schrauben und ein paar Clipsen befestigt. Vor dem Entnehmen ist der untere Folienstecker abzuziehen.<br />
<br />
<br />
[[Bild:compact_plus_open.jpg|250px]]<br />
<br />
Das geöffnete Gerät ohne Platine.<br />
Gut zu erkennen (im unverkleinertem Bild) sind die zwei Motoren und die Mechanik die dafür sorgen, dass die Aufbewarungstrommel gedreht und die Messstreifen herausgefahren werden können.<br />
<br />
== Komponenten ==<br />
<br />
=== Board ===<br />
Hochauflösende Scans beider Platinenseiten.<br />
Die Bauteile sind nach bestem Wissen und Gewissen bezeichnet (für spätere Schaltpläne). Speziell bei den Widerständen und Kondensatoren ist noch eine Kontrolle notwendig. Ich habe dabei alle blauen und schwarzen Bauteile als Widerstände und alles graue und weiße als Kondensatoren gedeutet.<br />
<br />
Änderungen bitte mir (Netzwanze) melden.<br />
<br />
[[Bild:AccuCheckL1.jpg|300px]][[Bild:AccuCheckL6.jpg|300px]]<br />
<br />
=== Stromversorgung ===<br />
Die zwei AAA Zellen sind in Serie geschaltet.<br />
Ein Schaltregler [IC7] erzeugt daraus 3.3 V.<br />
Ein Schaltregler [IC6] erzeugt daraus 12 V für das OLED.<br />
<br />
=== Komponenten ===<br />
<br />
Nach bestem Wissen und Gewissen bestimmt durch Kombination aus Schaltplänen und Messungen. Bei Komponenten mit "(?)" bin ich mir nicht sicher.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Bauteil || Größe<br />
|-<br />
| R1 || 820 kOhm<br />
|-<br />
| R35 || Temperaturfühler; NTC 10 kOhm bei 20°C (?)<br />
|-<br />
| R43 || 100 kOhm<br />
|-<br />
| R44 || 100 Ohm<br />
|-<br />
| R45 || 39 kOhm<br />
|-<br />
| R46 || 1 MOhm<br />
|-<br />
| C24 || 22 uF (?)<br />
|-<br />
| C38 || 4,7 uF<br />
|-<br />
| C39 || 4,7 uF<br />
|-<br />
| C44 || 100 nF<br />
|-<br />
| C45 || 470 nF (?)<br />
|-<br />
| C46 || 10 pF<br />
|-<br />
| L2 || 100 uH<br />
|-<br />
| IC1 || ASIC<br />
|-<br />
| IC2 || ATmega168A<br />
|-<br />
| IC3 || Atmel AT25640A SPI EEPROM<br />
|-<br />
| IC4 || NC7NP14 ULP Triple Inverter with Schmitt Trigger Input<br />
|-<br />
| IC5 || 74LVC1G86GV (Markierung V68)<br />
|-<br />
| IC6 || TPS61080 Step-up 12 V<br />
|-<br />
| IC7 || AS1329, Step-up 3,3 V<br />
|-<br />
| IC8 || BIG 01 A825MFL ????<br />
|-<br />
| D1 || BAT54W<br />
|-<br />
| XTAL1 || 32 Khz<br />
|-<br />
| XTAL2 || 4 Mhz<br />
|}<br />
<br />
=== Unbekanntes IC1 ===<br />
<br />
Hier mal der Dekodierte Barcode des noch Unbekannten IC1.<br />
Der decodierte Text ist:<br />
<br />
25SLEATM 8R4222 084420179+2P00+PLCMC<br />
<br />
[[Bild:AccuCheckDecodedMatrixCode.png|500px]]<br />
<br />
=== Pinbelegung Mega168 ===<br />
<br />
Wie oben mittles Messungen ermittelt. Ohne Garantie auf Vollständigkeit und Richtigkeit.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Pin || Port || Funktionen || Verwendung<br />
|-<br />
| 1 || PD3 || (PCINT19/OC2B/INT1) || Taste Mitte (S2)<br />
|-<br />
| 2 || PD4 || (PCINT20/XCK/T0) || Display SCLK (XCLK)<br />
|-<br />
| 3 || GND || || GND<br />
|-<br />
| 4 || VCC || || VCC<br />
|-<br />
| 5 || GND || || GND<br />
|-<br />
| 6 || VCC || || VCC<br />
|-<br />
| 7 || PB6 || (PCINT6/XTAL1/TOSC1) || An 32,768(?)kHz Oszillator. Taktsignal auch ohne ASIC vorhanden.<br />
|-<br />
| 8 || PB7 || (PCINT7/XTAL2/TOSC2) || enable 3.3V step-up<br />
|-<br />
| 9 || PD5 || (PCINT21/OC0B/T1) || VCC enable (12 V step-up)<br />
|-<br />
| 10 || PD6 || (PCINT22/OC0A/AIN0) || <br />
|-<br />
| 11 || PD7 || (PCINT23/AIN1) ||<br />
|-<br />
| 12 || PB0 || (PCINT0/CLKO/ICP1) || an Transistor T1 (schaltet 12 V über 100 Ohm gegen GND als Grundlast bzw. zum Entladen)<br />
|-<br />
| 13 || PB1 || (PCINT1/OC1A) || Display /CS<br />
|-<br />
| 14 || PB2 || (PCINT2/SS/OC1B) || <br />
|-<br />
| 15 || PB3 || (PCINT3/OC2A/MOSI) || ISP MOSI<br />
|-<br />
| 16 || PB4 || (PCINT4/MISO) || ISP MISO<br />
|-<br />
| 17 || PB5 || (SCK/PCINT5) || ISP SCK<br />
|-<br />
| 18 || AVCC || || mit Beschaltung an VCC<br />
|-<br />
| 19 || ADC6 || || Batteriespannung (3.3Volt StepUp dafür abschalten)<br />
|-<br />
| 20 || AREF || || mit Beschaltung an VCC (REFS1=0, REFS0=1)<br />
|-<br />
| 21 || GND || || GND<br />
|-<br />
| 22 || ADC7 || || Ausgang des 3,3V step-up über Spannungsteiler. Mit Step-Up wird 707 gemessen, ohne ca. 637.<br />
|-<br />
| 23 || PC0 || (ADC0/PCINT8) || Batteriespannung über Spannungsteiler, bei voller Batterie ca. 638<br />
|-<br />
| 24 || PC1 || (ADC1/PCINT9) || Display D/C<br />
|-<br />
| 25 || PC2 || (ADC2/PCINT10) || Display RESET<br />
|-<br />
| 26 || PC3 || (ADC3/PCINT11) || <br />
|-<br />
| 27 || PC4 || (ADC4/SDA/PCINT12) || Taste Links (S1)<br />
|-<br />
| 28 || PC5 || (ADC5/SCL/PCINT13) || Taste rechts (S3)<br />
|-<br />
| 29 || PC6 || (RESET/PCINT14) || ISP Reset<br />
|-<br />
| 30 || PD0 || (RXD/PCINT16) || <br />
|-<br />
| 31 || PD1 || (TXD/PCINT17) || Display SDIN. Achtung, ist auch TxD (UART-SPI möglich)<br />
|-<br />
| 32 || PD2 || (INT0/PCINT18) ||<br />
|}<br />
<br />
==== AVRdude ==== <br />
Auslesen der Fuses<br />
avrdude -p m168 -P /dev/ttyUSB0 -c avrispv2 -F -v<br />
<br />
avrdude: Device signature = 0x1e940b<br />
avrdude: Expected signature for ATMEGA168 is 1E 94 06<br />
avrdude: safemode: lfuse reads as 42<br />
avrdude: safemode: hfuse reads as D6<br />
avrdude: safemode: efuse reads as 1<br />
<br />
==== Flashen mit AVRdude ====<br />
Da die IDs von ATmega168 und ATmega168A abweichen, muss die Option -F mit avrdude verwendet werden.<br />
avrdude -p m168 -P /dev/ttyUSB0 -c avrispv2 -F -u -U flash:w:Oled-Demo.hex<br />
<br />
==== Fuses mit AVRdude ====<br />
Der ATmega168A hat die Fuse CLKDIV8 eingeschaltet.<br />
avrdude -p m168 -P /dev/ttyUSB0 -c avrispv2 -F -U lfuse:w:0xC2:m<br />
<br />
=== Display ===<br />
[[Bild:display.JPG|300px]]<br />
<br />
Das Display basiert auf OLED - Technologie und besitzt eine Auflösung von 102×80 Pixel, von denen jedes 16 Helligkeitsstufen darstellen kann.<br />
Displaycontroller ist SSD1325.<br />
<br />
Detailierte Informationen zum Display gibts auf adriano6's [[#Websites|Webseite ]]<br />
<br />
==== Inbetriebnahme auf dem Board ====<br />
<br />
Es ist möglich das Display auf dem Board in Betrieb zu nehmen, wenn alle Komponenten bis auf:<br />
R1, R43, R44, R45, R46, C24, C38, C39, C44, C45, C46, L2, IC6 und D1<br />
entfernt werden.<br />
T1 und R11 sind vermutlich als Grundlast zum Start des 12 V Step-up und zum Entladen des OLED beim Abschalten.<br />
Die folgende Tabelle enthält die Pads des Atmega168 Footprints und die entsprechenden Pins am Display.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Pad am Atmega168 || Pin am Display<br />
|-<br />
| PD1 || SDIN<br />
|-<br />
| PD4 || SCLK<br />
|-<br />
| PC1 || D/C<br />
|-<br />
| PC2 || RESET<br />
|-<br />
| PB1 || /CS<br />
|}<br />
<br />
=== Grafikbeschleunigung mit dem SSD1325 ===<br />
<br />
Mit dem im SSD1325 vorhandenen Befehlen Copy, DrawRectangle und HorizontalScolling kann man ein paar nette Animationen machen, bzw. dem ATmega eine Menge Arbeit abnehmen (Details zu Controller und Display stehen im Datenblatt und [[#Websites|hier ]]).<br />
<br />
Der Displaycontroller verfügt über ein 64x80 Bytes großes RAM, von dem das Display aber nur 51x80 Bytes (102x80 Pixel) darstellt, beginnend von Spalte 7 bis Spalte 57:<br />
<br />
{| class="wikitable" style="text-align:center; width:60em"<br />
! colspan=2 style="width:6em" | Col0<br />
! colspan=2 style="width:6em" | ...<br />
! colspan=2 style="width:6em" | Col6<br />
! colspan=2 style="width:6em; background:#c0c0c0" | Col7<br />
! colspan=2 style="width:6em; background:#c0c0c0" | ...<br />
! colspan=2 style="width:6em; background:#c0c0c0" | Col56<br />
! colspan=2 style="width:6em; background:#c0c0c0" | Col57<br />
! colspan=2 style="width:6em" | Col58<br />
! colspan=2 style="width:6em" | ...<br />
! colspan=2 style="width:6em" | Col63<br />
|- style="width:3em"<br />
| D7-4 || D3-0 || ... || ... || D7-4 || D3-0 || D7-4 || D3-0 || ... || ... || D7-4 || D3-0 || D7-4 || D3-0 || D7-4 || D3-0 || ... || ... || D7-4 || D3-0 <br />
|}<br />
<br />
Schaltet man im Controller nun Wraparound für das Scrolling- und Copy-Commando ein, hängen Ende und Anfang der jeweiligen Zeile hintereinander:<br />
<br />
{| class="wikitable" style="text-align:center; width:36em"<br />
|-<br />
| style="width:6em" | Col58 || style="width:6em" | ... || style="width:6em" | Col63 || style="width:6em" | Col0 || style="width:6em" | ... || style="width:6em" | Col6<br />
|}<br />
<br />
Aus Sicht des Copy- und DrawRectangle-Kommandos kann man jetzt folgendermaßen auf den nicht sichtbaren Bereich des Display-RAM zugreifen:<br />
<br />
{| class="wikitable" style="text-align:center; width:36em"<br />
|-<br />
| style="width:6em" | Col58 || style="width:6em" | ... || style="width:6em" | Col63 || style="width:6em" | Col64 || style="width:6em" | ... || style="width:6em" | Col70<br />
|}<br />
<br />
Um Daten in diesen Bereich zu bekommen, könnte man einen entsprechenden Bildschirmausschnitt definieren und die Daten einfach sequentiell da rein schreiben. Praktisch hat das aber nicht einwandfrei funktioniert. Besser schreibt man zuerst in den sichtbaren Bereich und kopiert dann den Block in den Bereich ab Spalte 58.<br />
Statt jetzt Grafiken byteweise über die Schnittstelle in das RAM zu schreiben braucht man sie nur noch durch den Controller vom unsichtbaren Bereich (maximal 26x80 Pixel) in den sichtbaren kopieren zu lassen.<br />
<br />
Ich habe [http://www.mikrocontroller.net/topic/109648#1419368 eine kleine Demo] geschrieben, die mit dem Copy-Befehl 8 Sprites (sich drehende Bälle) fliegen läßt und bei jeder Randberührung eines Sprites einen Zähler erhöht. Im Hintergrund laufen je eine horizontale und vertikale Linie (Rechteck) durch.<br />
Das Ganze verbraucht mit Software-SPI ca. 20% Rechenzeit des ATmega, bei Hardware-SPI sind es ca. 6%.<br />
<br />
Um auch in horizontaler Richtung eine pixelgenaue Bewegung zu erreichen, erstellt man für jedes Sprite zwei um jeweils ein Pixel verschobene Versionen, und kopiert diese nacheinander auf die selbe Spaltenposition.<br />
<br />
Das Timing ist etwas kritisch, da vom Controller keine Rückmeldung möglich ist, man muß ggf. die Wartezeit nach einem Kommando versuchsweise ermitteln. Schickt man das nächste Kommando zu früh ab, wird das gerade laufende abgebrochen, was nicht immer schön aussieht oder sogar den Controller zum Abstürzen bringt.<br />
<br />
Bei Ansteuerung mit Hardware-SPI muß man außerdem ca. 2us warten, bevor das CS-Signal deaktiviert werden kann.<br />
<br />
=== Spektrometer ===<br />
[[Bild:Accu-Check_CompactPlus_BZ_Sensor.jpg|200px]]<br />
<br />
Im Grunde genommen, handelt es sich um eine Reflexlichtschranke mit zwei roten LEDs, einer vermutlich infraroten LED, sowie einer Fotodiode.<br />
<br />
[[Bild:Accu-Check_CompactPlus_Photometer.jpg|200px]]<br />
<br />
== Programme ==<br />
=== µC ===<br />
* GPS http://www.mikrocontroller.net/topic/109648#1385554<br />
** http://www.mikrocontroller.net/topic/109648#1397017<br />
<br />
* Grafikdemo: http://www.mikrocontroller.net/topic/109648#1419368<br />
** Video: http://vimeo.com/6609124<br />
<br />
* Kurzzeitwecker: http://www.mikrocontroller.net/topic/109648#1412841<br />
** http://www.mikrocontroller.net/topic/109648#1427502<br />
<br />
* serielle Displaysteuerung: http://www.mikrocontroller.net/topic/109648#1487494<br />
<br />
=== PC ===<br />
* [http://www.mikrocontroller.net/topic/109648#1352701 gibt als Header gespeicherte Bilder auf std aus]<br />
* [http://www.mikrocontroller.net/topic/109648#1353067 Erweiterter (ungetesteter) Konvertierer für Bilder in Format für Display]<br />
<br />
== Links ==<br />
<br />
=== Technische Dokumente ===<br />
* [http://www.crystalfontz.com/controllers/SSD1325_2.1.pdf Datenblatt für Display-Controller]<br />
* [http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega168PA AVR Produktseite ATmega168PA mit Datasheets ]<br />
* [http://www.freshpatents.com/Device-for-analysis-of-a-sample-on-a-test-element-dt20081113ptan20080277280.php Patentschrift zu Gerät ]<br />
<br />
=== Websites ===<br />
* [http://home.arcor.de/wehrsdorf/Oled-Display-Recycling.html Oled-Recycling Seite von adriano6]<br />
<br />
=== Diskussions Threads ===<br />
<br />
* [http://www.mikrocontroller.net/topic/109648 Hauptdiskussionsthread im Mikrocontrollernet ]<br />
* [http://bascom-forum.de/index.php/topic,2754.0.html Umsetzung in Bascom (wer's mag) im Bascom-Forum]<br />
* [http://www.mikrocontroller.net/topic/143806 Vorschlag für Display-Adapter-Platine]<br />
<br />
[[Category:AVR-Projekte]]</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=Compact_Plus_Blutzuckermessger%C3%A4t-Hardware&diff=42076Compact Plus Blutzuckermessgerät-Hardware2010-01-08T12:46:07Z<p>Dl3daz: /* Pinbelegung Mega168 */</p>
<hr />
<div>== Hardware ==<br />
== Übersicht Hardware ==<br />
* OLED Display 102×80 Pixel incl. 16 Helligkeitsstufen pro Pixel / SSD1325 /43x36 mm gesamt<br />
* Atmega168PA<br />
* DC/DC-Wandler (Regler und Drosseln)<br />
* IR-Sender/Empfänger<br />
* 3 Tasten (4 wenn man den Schließer der Klappe mitzählt)<br />
* 2 Elektromotoren<br />
* kleine Lichtschranke/Barcodescanner<br />
* kleines Spektrometer (2 * LEDs rot, IR(?)-LED, Fotodiode)<br />
* Betriebsspannung 3V (2*AAA)<br />
* SMD Piezo-Summer<br />
<br />
== Gerät als Ganzes ==<br />
[[Bild:compact_plus.jpg|400px]]<br />
<br />
Das unzerlegte Gerät. Ganz links ist die Stechhilfe.<br />
<br />
== Gerät zerlegen ==<br />
Das Gehäuse besteht aus drei ineinander einrastenden Teilen (keine Schrauben). Relativ schadlose Demontage durch vorsichtiges Aufhebeln möglich.<br />
Erst das Seitenteil (links) ganz oben und 2 cm von unten ausrasten.<br />
Von unten anfangen die Gehäusehälften zu lösen, bis man sie über die Oberkante aufklappen kann.<br />
<br />
Die Platine selbst ist mit 2 Schrauben und ein paar Clipsen befestigt. Vor dem Entnehmen ist der untere Folienstecker abzuziehen.<br />
<br />
<br />
[[Bild:compact_plus_open.jpg|250px]]<br />
<br />
Das geöffnete Gerät ohne Platine.<br />
Gut zu erkennen (im unverkleinertem Bild) sind die zwei Motoren und die Mechanik die dafür sorgen, dass die Aufbewarungstrommel gedreht und die Messstreifen herausgefahren werden können.<br />
<br />
== Komponenten ==<br />
<br />
=== Board ===<br />
Hochauflösende Scans beider Platinenseiten.<br />
Die Bauteile sind nach bestem Wissen und Gewissen bezeichnet (für spätere Schaltpläne). Speziell bei den Widerständen und Kondensatoren ist noch eine Kontrolle notwendig. Ich habe dabei alle blauen und schwarzen Bauteile als Widerstände und alles graue und weiße als Kondensatoren gedeutet.<br />
<br />
Änderungen bitte mir (Netzwanze) melden.<br />
<br />
[[Bild:AccuCheckL1.jpg|300px]][[Bild:AccuCheckL6.jpg|300px]]<br />
<br />
=== Stromversorgung ===<br />
Die zwei AAA Zellen sind in Serie geschaltet.<br />
Ein Schaltregler [IC7] erzeugt daraus 3.3 V.<br />
Ein Schaltregler [IC6] erzeugt daraus 12 V für das OLED.<br />
<br />
=== Komponenten ===<br />
<br />
Nach bestem Wissen und Gewissen bestimmt durch Kombination aus Schaltplänen und Messungen. Bei Komponenten mit "(?)" bin ich mir nicht sicher.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Bauteil || Größe<br />
|-<br />
| R1 || 820 kOhm<br />
|-<br />
| R35 || Temperaturfühler; NTC 10 kOhm bei 20°C (?)<br />
|-<br />
| R43 || 100 kOhm<br />
|-<br />
| R44 || 100 Ohm<br />
|-<br />
| R45 || 39 kOhm<br />
|-<br />
| R46 || 1 MOhm<br />
|-<br />
| C24 || 22 uF (?)<br />
|-<br />
| C38 || 4,7 uF<br />
|-<br />
| C39 || 4,7 uF<br />
|-<br />
| C44 || 100 nF<br />
|-<br />
| C45 || 470 nF (?)<br />
|-<br />
| C46 || 10 pF<br />
|-<br />
| L2 || 100 uH<br />
|-<br />
| IC1 || ASIC<br />
|-<br />
| IC2 || ATmega168A<br />
|-<br />
| IC3 || Atmel AT25640A SPI EEPROM<br />
|-<br />
| IC4 || NC7NP14 ULP Triple Inverter with Schmitt Trigger Input<br />
|-<br />
| IC5 || 74LVC1G86GV (Markierung V68)<br />
|-<br />
| IC6 || TPS61080 Step-up 12 V<br />
|-<br />
| IC7 || AS1329, Step-up 3,3 V<br />
|-<br />
| IC8 || BIG 01 A825MFL ????<br />
|-<br />
| D1 || BAT54W<br />
|-<br />
| XTAL1 || 32 Khz<br />
|-<br />
| XTAL2 || 4 Mhz<br />
|}<br />
<br />
=== Unbekanntes IC1 ===<br />
<br />
Hier mal der Dekodierte Barcode des noch Unbekannten IC1.<br />
Der decodierte Text ist:<br />
<br />
25SLEATM 8R4222 084420179+2P00+PLCMC<br />
<br />
[[Bild:AccuCheckDecodedMatrixCode.png|500px]]<br />
<br />
=== Pinbelegung Mega168 ===<br />
<br />
Wie oben mittles Messungen ermittelt. Ohne Garantie auf Vollständigkeit und Richtigkeit.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Pin || Port || Funktionen || Verwendung<br />
|-<br />
| 1 || PD3 || (PCINT19/OC2B/INT1) || Taste Mitte (S2)<br />
|-<br />
| 2 || PD4 || (PCINT20/XCK/T0) || Display SCLK (XCLK)<br />
|-<br />
| 3 || GND || || GND<br />
|-<br />
| 4 || VCC || || VCC<br />
|-<br />
| 5 || GND || || GND<br />
|-<br />
| 6 || VCC || || VCC<br />
|-<br />
| 7 || PB6 || (PCINT6/XTAL1/TOSC1) || An 32,768(?)kHz Oszillator. Auch ohne ASIC vorhanden.<br />
|-<br />
| 8 || PB7 || (PCINT7/XTAL2/TOSC2) || enable 3.3V step-up<br />
|-<br />
| 9 || PD5 || (PCINT21/OC0B/T1) || VCC enable (12 V step-up)<br />
|-<br />
| 10 || PD6 || (PCINT22/OC0A/AIN0) || <br />
|-<br />
| 11 || PD7 || (PCINT23/AIN1) ||<br />
|-<br />
| 12 || PB0 || (PCINT0/CLKO/ICP1) || an Transistor T1 (schaltet 12 V über 100 Ohm gegen GND als Grundlast bzw. zum Entladen)<br />
|-<br />
| 13 || PB1 || (PCINT1/OC1A) || Display /CS<br />
|-<br />
| 14 || PB2 || (PCINT2/SS/OC1B) || <br />
|-<br />
| 15 || PB3 || (PCINT3/OC2A/MOSI) || ISP MOSI<br />
|-<br />
| 16 || PB4 || (PCINT4/MISO) || ISP MISO<br />
|-<br />
| 17 || PB5 || (SCK/PCINT5) || ISP SCK<br />
|-<br />
| 18 || AVCC || || mit Beschaltung an VCC<br />
|-<br />
| 19 || ADC6 || || Batteriespannung (3.3Volt StepUp dafür abschalten)<br />
|-<br />
| 20 || AREF || || mit Beschaltung an VCC (REFS1=0, REFS0=1)<br />
|-<br />
| 21 || GND || || GND<br />
|-<br />
| 22 || ADC7 || || Ausgang des 3,3V step-up über Spannungsteiler. Mit Step-Up wird 707 gemessen, ohne ca. 637.<br />
|-<br />
| 23 || PC0 || (ADC0/PCINT8) || Batteriespannung über Spannungsteiler, bei voller Batterie ca. 638<br />
|-<br />
| 24 || PC1 || (ADC1/PCINT9) || Display D/C<br />
|-<br />
| 25 || PC2 || (ADC2/PCINT10) || Display RESET<br />
|-<br />
| 26 || PC3 || (ADC3/PCINT11) || <br />
|-<br />
| 27 || PC4 || (ADC4/SDA/PCINT12) || Taste Links (S1)<br />
|-<br />
| 28 || PC5 || (ADC5/SCL/PCINT13) || Taste rechts (S3)<br />
|-<br />
| 29 || PC6 || (RESET/PCINT14) || ISP Reset<br />
|-<br />
| 30 || PD0 || (RXD/PCINT16) || <br />
|-<br />
| 31 || PD1 || (TXD/PCINT17) || Display SDIN. Achtung, ist auch TxD (UART-SPI möglich)<br />
|-<br />
| 32 || PD2 || (INT0/PCINT18) ||<br />
|}<br />
<br />
==== AVRdude ==== <br />
Auslesen der Fuses<br />
avrdude -p m168 -P /dev/ttyUSB0 -c avrispv2 -F -v<br />
<br />
avrdude: Device signature = 0x1e940b<br />
avrdude: Expected signature for ATMEGA168 is 1E 94 06<br />
avrdude: safemode: lfuse reads as 42<br />
avrdude: safemode: hfuse reads as D6<br />
avrdude: safemode: efuse reads as 1<br />
<br />
==== Flashen mit AVRdude ====<br />
Da die IDs von ATmega168 und ATmega168A abweichen, muss die Option -F mit avrdude verwendet werden.<br />
avrdude -p m168 -P /dev/ttyUSB0 -c avrispv2 -F -u -U flash:w:Oled-Demo.hex<br />
<br />
==== Fuses mit AVRdude ====<br />
Der ATmega168A hat die Fuse CLKDIV8 eingeschaltet.<br />
avrdude -p m168 -P /dev/ttyUSB0 -c avrispv2 -F -U lfuse:w:0xC2:m<br />
<br />
=== Display ===<br />
[[Bild:display.JPG|300px]]<br />
<br />
Das Display basiert auf OLED - Technologie und besitzt eine Auflösung von 102×80 Pixel, von denen jedes 16 Helligkeitsstufen darstellen kann.<br />
Displaycontroller ist SSD1325.<br />
<br />
Detailierte Informationen zum Display gibts auf adriano6's [[#Websites|Webseite ]]<br />
<br />
==== Inbetriebnahme auf dem Board ====<br />
<br />
Es ist möglich das Display auf dem Board in Betrieb zu nehmen, wenn alle Komponenten bis auf:<br />
R1, R43, R44, R45, R46, C24, C38, C39, C44, C45, C46, L2, IC6 und D1<br />
entfernt werden.<br />
T1 und R11 sind vermutlich als Grundlast zum Start des 12 V Step-up und zum Entladen des OLED beim Abschalten.<br />
Die folgende Tabelle enthält die Pads des Atmega168 Footprints und die entsprechenden Pins am Display.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Pad am Atmega168 || Pin am Display<br />
|-<br />
| PD1 || SDIN<br />
|-<br />
| PD4 || SCLK<br />
|-<br />
| PC1 || D/C<br />
|-<br />
| PC2 || RESET<br />
|-<br />
| PB1 || /CS<br />
|}<br />
<br />
=== Grafikbeschleunigung mit dem SSD1325 ===<br />
<br />
Mit dem im SSD1325 vorhandenen Befehlen Copy, DrawRectangle und HorizontalScolling kann man ein paar nette Animationen machen, bzw. dem ATmega eine Menge Arbeit abnehmen (Details zu Controller und Display stehen im Datenblatt und [[#Websites|hier ]]).<br />
<br />
Der Displaycontroller verfügt über ein 64x80 Bytes großes RAM, von dem das Display aber nur 51x80 Bytes (102x80 Pixel) darstellt, beginnend von Spalte 7 bis Spalte 57:<br />
<br />
{| class="wikitable" style="text-align:center; width:60em"<br />
! colspan=2 style="width:6em" | Col0<br />
! colspan=2 style="width:6em" | ...<br />
! colspan=2 style="width:6em" | Col6<br />
! colspan=2 style="width:6em; background:#c0c0c0" | Col7<br />
! colspan=2 style="width:6em; background:#c0c0c0" | ...<br />
! colspan=2 style="width:6em; background:#c0c0c0" | Col56<br />
! colspan=2 style="width:6em; background:#c0c0c0" | Col57<br />
! colspan=2 style="width:6em" | Col58<br />
! colspan=2 style="width:6em" | ...<br />
! colspan=2 style="width:6em" | Col63<br />
|- style="width:3em"<br />
| D7-4 || D3-0 || ... || ... || D7-4 || D3-0 || D7-4 || D3-0 || ... || ... || D7-4 || D3-0 || D7-4 || D3-0 || D7-4 || D3-0 || ... || ... || D7-4 || D3-0 <br />
|}<br />
<br />
Schaltet man im Controller nun Wraparound für das Scrolling- und Copy-Commando ein, hängen Ende und Anfang der jeweiligen Zeile hintereinander:<br />
<br />
{| class="wikitable" style="text-align:center; width:36em"<br />
|-<br />
| style="width:6em" | Col58 || style="width:6em" | ... || style="width:6em" | Col63 || style="width:6em" | Col0 || style="width:6em" | ... || style="width:6em" | Col6<br />
|}<br />
<br />
Aus Sicht des Copy- und DrawRectangle-Kommandos kann man jetzt folgendermaßen auf den nicht sichtbaren Bereich des Display-RAM zugreifen:<br />
<br />
{| class="wikitable" style="text-align:center; width:36em"<br />
|-<br />
| style="width:6em" | Col58 || style="width:6em" | ... || style="width:6em" | Col63 || style="width:6em" | Col64 || style="width:6em" | ... || style="width:6em" | Col70<br />
|}<br />
<br />
Um Daten in diesen Bereich zu bekommen, könnte man einen entsprechenden Bildschirmausschnitt definieren und die Daten einfach sequentiell da rein schreiben. Praktisch hat das aber nicht einwandfrei funktioniert. Besser schreibt man zuerst in den sichtbaren Bereich und kopiert dann den Block in den Bereich ab Spalte 58.<br />
Statt jetzt Grafiken byteweise über die Schnittstelle in das RAM zu schreiben braucht man sie nur noch durch den Controller vom unsichtbaren Bereich (maximal 26x80 Pixel) in den sichtbaren kopieren zu lassen.<br />
<br />
Ich habe [http://www.mikrocontroller.net/topic/109648#1419368 eine kleine Demo] geschrieben, die mit dem Copy-Befehl 8 Sprites (sich drehende Bälle) fliegen läßt und bei jeder Randberührung eines Sprites einen Zähler erhöht. Im Hintergrund laufen je eine horizontale und vertikale Linie (Rechteck) durch.<br />
Das Ganze verbraucht mit Software-SPI ca. 20% Rechenzeit des ATmega, bei Hardware-SPI sind es ca. 6%.<br />
<br />
Um auch in horizontaler Richtung eine pixelgenaue Bewegung zu erreichen, erstellt man für jedes Sprite zwei um jeweils ein Pixel verschobene Versionen, und kopiert diese nacheinander auf die selbe Spaltenposition.<br />
<br />
Das Timing ist etwas kritisch, da vom Controller keine Rückmeldung möglich ist, man muß ggf. die Wartezeit nach einem Kommando versuchsweise ermitteln. Schickt man das nächste Kommando zu früh ab, wird das gerade laufende abgebrochen, was nicht immer schön aussieht oder sogar den Controller zum Abstürzen bringt.<br />
<br />
Bei Ansteuerung mit Hardware-SPI muß man außerdem ca. 2us warten, bevor das CS-Signal deaktiviert werden kann.<br />
<br />
=== Spektrometer ===<br />
[[Bild:Accu-Check_CompactPlus_BZ_Sensor.jpg|200px]]<br />
<br />
Im Grunde genommen, handelt es sich um eine Reflexlichtschranke mit zwei roten LEDs, einer vermutlich infraroten LED, sowie einer Fotodiode.<br />
<br />
[[Bild:Accu-Check_CompactPlus_Photometer.jpg|200px]]<br />
<br />
== Programme ==<br />
=== µC ===<br />
* GPS http://www.mikrocontroller.net/topic/109648#1385554<br />
** http://www.mikrocontroller.net/topic/109648#1397017<br />
<br />
* Grafikdemo: http://www.mikrocontroller.net/topic/109648#1419368<br />
** Video: http://vimeo.com/6609124<br />
<br />
* Kurzzeitwecker: http://www.mikrocontroller.net/topic/109648#1412841<br />
** http://www.mikrocontroller.net/topic/109648#1427502<br />
<br />
* serielle Displaysteuerung: http://www.mikrocontroller.net/topic/109648#1487494<br />
<br />
=== PC ===<br />
* [http://www.mikrocontroller.net/topic/109648#1352701 gibt als Header gespeicherte Bilder auf std aus]<br />
* [http://www.mikrocontroller.net/topic/109648#1353067 Erweiterter (ungetesteter) Konvertierer für Bilder in Format für Display]<br />
<br />
== Links ==<br />
<br />
=== Technische Dokumente ===<br />
* [http://www.crystalfontz.com/controllers/SSD1325_2.1.pdf Datenblatt für Display-Controller]<br />
* [http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega168PA AVR Produktseite ATmega168PA mit Datasheets ]<br />
* [http://www.freshpatents.com/Device-for-analysis-of-a-sample-on-a-test-element-dt20081113ptan20080277280.php Patentschrift zu Gerät ]<br />
<br />
=== Websites ===<br />
* [http://home.arcor.de/wehrsdorf/Oled-Display-Recycling.html Oled-Recycling Seite von adriano6]<br />
<br />
=== Diskussions Threads ===<br />
<br />
* [http://www.mikrocontroller.net/topic/109648 Hauptdiskussionsthread im Mikrocontrollernet ]<br />
* [http://bascom-forum.de/index.php/topic,2754.0.html Umsetzung in Bascom (wer's mag) im Bascom-Forum]<br />
* [http://www.mikrocontroller.net/topic/143806 Vorschlag für Display-Adapter-Platine]<br />
<br />
[[Category:AVR-Projekte]]</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=Beschleunigungssensor&diff=41798Beschleunigungssensor2010-01-01T22:28:55Z<p>Dl3daz: </p>
<hr />
<div>Hier entsteht ein Artikel über Beschleunigungssensoren. Und damit es voran geht, sammeln wir mal Informationen:<br />
<br />
===Beschleunigung===<br />
Beschleunigung ist als die Änderung der Geschwindigkeit <math>v=\frac{x}{t}</math> über die Zeit <math>t</math>.<br />
<br />
In SI-Einheiten: <math>A=\frac{m}{s}.\frac{1}{s}</math>, womit wir bei den bekannten <math>\frac{m}{s^2}</math> sind.<br />
<br />
Real existierende Beschleunigungssensoren oder Accelerometer messen die Beschleunigung indirekt über die Kraft, die erforderlich ist, um eine Masse zu beschleunigen.<br />
<br />
Daher wirkt auch die Erdbeschleunigung auf diese Masse.<br />
<br />
Das hat den Vorteil, daß man einen Beschleunigungssensor mit der bekannten Größe <math>9,81.\frac{m}{s^2}</math> kalibrieren kann.<br />
Auch die Messung der Neigung gegenüber der Horizontalen kann so gemessen werden.<br />
Nachteilig ist, daß es durch diesen Effekt erschwert wird, Geschwindigkeitsänderungen eines Fahrzeugs zu messen, sobald dieses sich nicht absolut horizontal bewegt.<br />
<br />
*Analog (d.h Auswertung über ADC)<br />
** Freescale MMA7260 (3,3V, Low G, 3 Achsen)<br />
** STM LIS302SG (3,3V, Low G, 3 Achsen)<br />
<br />
<br />
*Digital (d.h spricht I2C, SPI)<br />
** Freescale MMA7455 (3,3V, Low G, 3 Achsen)<br />
** STM LIS302DL (2.16-3.6V, Low G, 3 Achsen)<br />
** [http://www.bosch-sensortec.com/content/language1/downloads/BMA150_DataSheet_Rev.1.5_30May2008.pdf BMA150] (2,4V-3,6V, +/-2G, +/-4G, +/-8G)<br />
<br />
Beschleunigungssensoren unterscheiden sich in der Empfindlichkeit (ab ca. +/- 1G), der Abtastrate (wenige Hz bis mehrere kHz) und der Auflösung (8bit - 16 bit).<br />
<br />
Beim Einsatz von Beschleunigungssensoren sind diese Werte entscheidend, aber auch Linearität, Offset und Rauschen müssen u.U. berücksichtigt werden.<br />
<br />
Viele Beschleunigungssensoren haben Schaltausgänge, die ein Über- und/oder Unterschreiten von Beschleunigungswerten signalisieren. Damit lassen sich Schock- oder Bewegungssensoren realisieren.<br />
<br />
[[Kategorie:Sensorik]]</div>Dl3dazhttps://www.mikrocontroller.net/index.php?title=Benutzer:Dl3daz&diff=37831Benutzer:Dl3daz2009-07-17T21:20:17Z<p>Dl3daz: Die Seite wurde neu angelegt: [http://ip-six.de/ Test-Link]</p>
<hr />
<div>[http://ip-six.de/ Test-Link]</div>Dl3daz