Das Protokoll
Das Protokoll ließ sich nur durch mitschneiden des Datentransfers
herausfinden.
Dazu wurde ein altes T310 bei ebay gekauft und der Datentransfer analysiert.
Es war ein bisschen schwierig herauszufinden wer was sendet,
also keine Garantie auf Richtigkeit der folgenden Angaben ;)
Achtung!
Diese Angaben wurden durch "ausprobieren" herausgefunden!
Ich kann keine Garantie geben dass dies korrekt ist.
Benutzung auf eigene Gefahr!
Für eventuell entstandene Schäden wird keine Haftung übernommen!
Folgende Dokumente habe ich per google.de gefunden, sie waren sehr hilfreich:
AT Kommandos des Handys:
http://developer.sonyericsson.com/getDocument.do?docId=65054
Dokumentation des GSM 07.10 mux Protokolls:
http://www.hddznet.com/FileDown/mc35/MC35jj.pdf
Init & umschalten auf 460800 baud:
(die Echos des Handy auf die Kamerabefehle habe ich weggelassen, geht auch ohne)
| direction | command | comment |
| Kamera | AT&F\r | |
| Handy | \r\r\nOK\r\n | ok |
| Kamera | AT+IPR=?\r | show available baudrates |
| Handy | +IPR: (),(1200,2400,4800,9600,19200, 38400,57600,115200,460800)\r
\n\r\nOK\r\n | available baudrates |
| Kamera | AT+IPR=460800\r | select 460800 baud |
| Handy | \r\nOK\r\n | ok |
Jetzt schaltet das Handy auf 460800 Baud um.
Wenn man die +IPR: Liste als +IPR: (),(1200,2400,115200) sendet
wählt die Cam zwar 115200 als Baudrate, nach dem aktivieren des
Mux Protokolls schaltet sie aber in jedem Fall auf 460800 baud.
| direction | command | comment |
| Kamera | AT+CMUX=? | show mux info |
| Handy | \r\r\n+CMUX: (0),(0),(1-7),(31),(10),(3),(30),(10),(1-7)\r
\r\r\nOK\r\n | mobile shows available mux parameters |
| Kamera | AT+CMUX=0,0,7,31 | set up/activate mux |
| Handy | \r\r\n\nOK\r\n | ok, mobile now activates mux protocol |
jetzt wird der GSM 07.10 Mux Modus aktiviert.
Auffallend ist dass die Kamera andere Muxmodi ignoriert, wenn
man ihr per CMUX: (0),(0),(1-4)... mitteilt das man nur bis Speed 4 (115200baud)
arbeiten kann wird dies ignoriert.
Das Mux-Aktivierungskommando lautet
immer AT+CMUX=0,0,7,31
Mux Init & Initialisierung der Kamera:
Ab jetzt wird mit mux Paketen kommuniziert.
Der Übersicht halber habe ich diese Kommunikation als txt Files
gespeichert.
Dabei gilt:
TX: Kamera -> Handy
RX: Handy -> Kamera
Verbindungsaufbau:
Download als .txt Datei
Vorschaumodus aktivieren & Vorschaubilder holen:
Nun ist die Kamera initialisiert.
Jetzt aktiviert das Handy den Previewmodus und bestätigt
Die Pakete alle 512 Datenbyte mit einem Ack (?) Befehl.
Diese Vorschaubilder liegen im RGB332 Format und einer Auflösung von 80x60px vor.
8Byte Daten entsprechen also 1 Pixel, 3Bit für Rot, 3Bit für Grün und 2 Bit für Blau.
Die Vorschaubilder kommen mit einer Framerate von 6 (?) fps an.
Rechts ein Beispielbild in Originalgröße (um 90° gedreht).
Live-Preview:
Download als .txt Datei
Vollbild herunterladen:
Durch drücken des Grab Buttons am Handy wird das aktuelle Bild
im Kamera SRam (?) zwischengespeichert.
Sobald man das Bild beispielsweise als MMS senden möchte
Wird das Bild von der Kamera zum Handy transferiert.
Das Protokoll ähnelt dem anfordern des Live Preview Bildes
Es werden folgende Daten als "Transfer"-Init gesendet:
F981EF3F8300827100583C6D6F6E69746F72696E672D636F |...?...q.X.monitoring-co|
6D6D616E642076657273698CF9F981EF3F6F6E3D22312E30 |mmandversi.....?on="1.0|
222074616B652D7069633D224E4F222073656E642D706978 |"take-pic="NO"send-pix|
8CF9F981EF3F656C2D73697A653D223634302A3438302220 |......?el-size="640*480"|
7A6F6F6D3D223130222F3E42008CF9F981EF3F21782D6274 |zoom="10"/.B......?!x-bt|
2F696D6167696E672D6D6F6E69746F72696E672D696D6167 |/imaging-monitoring-imag|
65008CF9F981EF0D4C00060601804BF9xxxxxxxxxxxxxxxx |e.......L.....K.........|
Darauf folgen nun immer 512 Byte Daten (=506 Byte Bilddaten) als mux Pakete:
F983EF3F9002004801FDFFD8FFE000104A46494600010100|...?...H........JFIF....|
000100010000FFDB004300EDF9F983EF3F120D0D100D0B12|.........C......?.......|
101010141412171B2E1D1B19191B39292B222E423B474542|..............9)+".B;GEB|
EDF9F983EF3F3B404049526959494E655040405C7E5E656E|.....?;@@IRiYINeP@@~^en|
707777774759838C80738A6975EDF9F983EF3F7773FFDB00|pwwwGY...s.iu.....?ws...|
43011414141B191B371D1D37734B404B7373737373737373|C.......7..7sK@Kssssssss|
...
Die ersten 6 Byte des 512Byte Paketes beinhalten eine Art Header.
Zum Beispiel 90 02 00 48 01 FD für das erste Paket.
90 = ???
02 00 = 512 Byte gesamt
48 01 = erstes Paket (?)
FD = ???
Es kommen manchmal auch Pakete mit 90 xx xx 48 00 xx oder 90 xx xx 49 0x xx.
Die Bedeutung ist mir nicht ganz klar. Jedenfalls hat es irgendwas mit Paket
Nummer zu tun oder markiert das letzte Paket.
Alle 512 Byte Daten werden vom Handy mit einem ACK (?) Paket beantwortet:
F9 81 EF 07 83 00 03 A6 F9
Diese Bestätigung kann man ein wenig versetzt senden.
Wenn man zulange wartet liefert das Handy nur noch Bilddaten mit 0xFF als
Daten. Muss man sich nochmal genau ansehen ;)
Nach dem gesamten Transfer wird nochmal der mux kanal konfiguriert (?):
Handy : F9 03 EF 09 E1 07 23 0C 01 FB F9
Kamera: F9 01 EF 0B E3 07 23 0C 01 79 F9
Vergisst man diese Pakete scheint sich die Kamera bei nachfolgenden
Bildanforderungen mitten im Datentransfer aufzuhängen.
Beispielbild:

(abends, recht wenig beleuchtet)