Differences between revisions 8 and 9
Revision 8 as of 2006-08-29 13:10:46
Size: 20253
Editor: Jerome
Comment:
Revision 9 as of 2006-09-01 08:27:12
Size: 20286
Editor: Jerome
Comment:
Deletions are marked like this. Additions are marked like this.
Line 416: Line 416:
== Adresses memoires identifiees ==
Une des premiere adresse que le programme SAM lit est 64 00 sur 11 octets ce qui correspond aux parametres de la montre et aux unites de mesure utilisees par la montre
== Identified memory addresses ==

Memory address are 16 bits (2 bytes) little endian(?) meaning that the most significant byte is the second one.

 * General parameters of the watch (units, ...) are coded on adress ''64 00'' over 11 bytes
Line 422: Line 426:
Valeur des octets : Meaning of byte number :
Line 429: Line 433:
 * 13: vitesse ascentionelle m/s(00) / m/mn(01) / m/h(02) / ft/s(03) / ft/mn(04) / ft/h(05)  * 13: ascentional speed m/s(00) / m/mn(01) / m/h(02) / ft/s(03) / ft/mn(04) / ft/h(05)
Line 432: Line 436:
octets 16 et 17 ??

== Analyse des log meteorologiques ==

Ces logs contiennent 2 jours d'info meteo prises toutes les 15 minutes soit 193 donnees (en tenant compte des bords).

On constate que SAM lit onze blocs de 50 octets ("0x32"). Ces blocs sont adjacents (les bits de poids le plus fort soit sur le second octet) : "07 0d", "a2 0d", "d4 0d", "06 0e" ... "64 0f", puis 30 octets toujours a la suite de "1e 0f" a "b4 0f".
Au total cela fait 580 octets soit 3 octets par enregistrement.

La lecture detaillee des trains d'octets semble indique une succession de "03 f6 1a". "1a" ou "1b" correspondrait a la temperature (26 ou 27C) et "3 f6" a la pression en hPa (pas d'inversion dans l'ordre des octets ici).
byte 16 et 17 ??


 * Max altitude is coded on address ''48 0d''

{{{
< 05 00 03 48 0d 12 57
> 05 00 15 48 0d 12 06 08 0f 2b 0a }}}

Max altitude was reached on (20)06/08/15 and the value is ''2b 0a'' as a short integer (16 bits little endian) meening 2603m
 


== Weather log ==

Weather log are 2 day long, one data point every 15mn, so 193 data

The SAM software reads 11 blocks of 50 bytes (''0x32'') starting from ''07 0d'' to ''64 0f'' (ending at ''1e 0f''), then 30 bytes from ''1e 0f'' to ''b4 of''. 580 byte were read, making 3 byte per log-point. one byte is dedicated to the temerature (''1a'' or ''1b'' in this log (26 or 27C) and 2 bytes for pression (in big endian short integer)
Line 444: Line 456:

Suunto X6HR

Presentation de la montre

La montre X6HR est destine a l'entrainement pour les sports de montagne. Elle dispose des fonctions :

  • Heure
  • Chronometre
  • Reveil
  • Boussole
  • Altimetre
  • Barometre
  • Cardiofrequencemetre
  • Enregistrement des variables au cours des entrainements
  • Transfert des information sur ordinateur

Cardiofrequencemetre

La frequence cardiaque est mesuree par une sonde thoracique. La transmission est sans fil (radiofrequence), la montre est compatible avec les ceintures Polar non cryptees (ancienne generation).

Transfers des journaux d'activite

La montre est connectee par une liaison serie (RS232) a l'ordinateur. La connectique cote montre est une simple pince avec 3 contacts : robuste et astucieux.

Le logiciel d'exploitation des donnees fourni par Suunto est <<Activity Manager>>, il ne fonctionne que sous windows (fonctionne en emulation avec VMware sous linux).

Apres avoir contacte Suunto quant au protocole utilise pour communiquer avec la montre, le service technique m'a dit n'offir de support que sous windows. Je suis donc a la recherche de moyen d'intercepter le signal serie (pas trop complique), de le decoder afin de realiser un logiciel de trasfert et d'analyse des donnees qui serait open-source et multi-plateformes (en particulier linux).

Configuration du port serie

Il semblerait que la communication se fasse a 9600 8N1 (9600 baud/s 8 bits de donnees, pas de parite et 1 bit de stop).

La communication entre le PC windows et la montre peut etre intercepte en intercallant une machine linux entre les deux. Les deux ordinateurs etant connectes par un cable RS232 croise (NullModem). Sur la machine linux il faut un programme qui transmette les datagrammes d'un port a l'autre. J'utilise slsniff (http://sourceforge.net/projects/slsnif/)

# slsnif  /dev/ttyS1 -p /dev/ttyS2 -x -i X6HR.log -o PC.log  -s 9600 |tee logfile

Il est egalement possible de capturer directement les trames avec un seul PC en utilisant le logiciel interceptty et l'emulateur VMware (http://www.suspectclass.com/interceptty/) :

# interceptty -s 'is peed 9600 ospeed 9600' -l /dev/ttyS1 @/tmp/sersock 

La communication est visiblement binaire, ce qui complique un peu la tache. Le PC semble toujours envoyer des commandes qui font sept octets de long et il ne semble pas y avoir de << fin de commande >> : {{{05 00 03 5a 00 01 5b #initialisation de la communication "connect" 4 echanges d'initialisation, 3 de terminaison 05 00 03 5d 00 04 59 #demande de telechargement de log Hiking 05 00 03 5d 00 04 59 #demande de telechargement de log Weather }}}

Visiblement la montre s'identifie par son numero de serie mais je n'ai pas encore trouve sous quelle forme. Exemple de l'initialisation de la comminication avec un seul journal de type "temps" disponible

Un seul log 26/08/2006 Weather
start time 12:00:00
duree 48:00:00
Interval: 900
Alt min & max = 0

<  05 00 03 5a 00 01 5b          |    Z  [   
>  05 00 04 5a 00 01 05 5e       |    Z   ^  
<  05 00 03 64 00 0b 6f          |    d  o   
>  05 00 0e 64 00 0b 00 01 00 01 |    d      
>  01 01 02 01 01 01 00 6c       |        l  
<  05 00 03 48 0d 12 57          |    H  W   
>  05 00 15 48 0d 12 06 08 0f 2b |    H     +
>  0a                            |           
>  e8 14 00 00 32 11 00 00 00 06 |     2     
>  ff ff ff 51                   |    Q      
<  05 00 03 b4 0f 14 af          |           
>  05 00 17 b4 0f 14 00 00 00 00 |           
>  00 00 00 00 00 00 00 00 00 00 |           
>  00 00 00 00 00 00 af          |           
<  05 00 03 c9 19 1e ce          |           
>  05 00 21 c9 19 1e 00 00 00 00 |   !       
>  00 00 00 00 00 00 00 00 00 00 |           
>  00 00 00 00 00 00 00 00 00 00 |           
>  00 00 00 00 00 00 ce          |           
<  05 00 03 5d 00 04 59          |    ]  Y   
>  05 00 07 5d 00 04 3d 28 25 3c |    ]  =(%<
>  55                            | U         
<  05 00 03 5a 00 01 5b          |    Z  [   
>  05 00 04 5a 00 01 05 5e       |    Z   ^  
<  05 00 03 5d 00 04 59          |    ]  Y   
>  05 00 07 5d 00 04 3d 28 25 3c |    ]  =(%<

>  55

Voici le resultat du telechargement du journal en question (sortie windows et flux binaire associe :

{{{Suunto X6HR. log data

  • General

Wristop model: X6HR. Wristop serial: 61403760 Log name: Weather Log Log type: Weather Start : 26/08/2006 12:00:00 End : 28/08/2006 12:00:00 Duration: 48:00.00 Sample interval: 900 s Notes:

  • Weather

Max temperature: 28 C Time: 27/08/2006 18:45:00 Min temperature: 25 C Time: 27/08/2006 06:15:00 Max pressure: 1014 hPa Time: 26/08/2006 12:00:00 Min pressure: 1014 hPa Time: 26/08/2006 12:00:00

  • Samples

Calendar time Log time Temperature (C) Air pressure (hPa)

26/08/2006 12:00:00 00:00.00 26 1014 26/08/2006 12:15:00 00:15.00 26 1014 26/08/2006 12:30:00 00:30.00 26 1014 26/08/2006 12:45:00 00:45.00 26 1014 26/08/2006 13:00:00 01:00.00 26 1014 26/08/2006 13:15:00 01:15.00 26 1014 26/08/2006 13:30:00 01:30.00 26 1014 26/08/2006 13:45:00 01:45.00 26 1014 26/08/2006 14:00:00 02:00.00 26 1014 26/08/2006 14:15:00 02:15.00 26 1014 26/08/2006 14:30:00 02:30.00 26 1014 26/08/2006 14:45:00 02:45.00 26 1014 26/08/2006 15:00:00 03:00.00 26 1014 26/08/2006 15:15:00 03:15.00 26 1014 26/08/2006 15:30:00 03:30.00 26 1014 26/08/2006 15:45:00 03:45.00 26 1014 26/08/2006 16:00:00 04:00.00 26 1014 26/08/2006 16:15:00 04:15.00 26 1014 26/08/2006 16:30:00 04:30.00 26 1014 26/08/2006 16:45:00 04:45.00 27 1014 26/08/2006 17:00:00 05:00.00 27 1014 26/08/2006 17:15:00 05:15.00 27 1014 26/08/2006 17:30:00 05:30.00 26 1014 26/08/2006 17:45:00 05:45.00 26 1014 26/08/2006 18:00:00 06:00.00 26 1014 26/08/2006 18:15:00 06:15.00 26 1014 26/08/2006 18:30:00 06:30.00 26 1014 26/08/2006 18:45:00 06:45.00 26 1014 26/08/2006 19:00:00 07:00.00 26 1014 26/08/2006 19:15:00 07:15.00 26 1014 26/08/2006 19:30:00 07:30.00 26 1014 26/08/2006 19:45:00 07:45.00 26 1014 26/08/2006 20:00:00 08:00.00 26 1014 26/08/2006 20:15:00 08:15.00 26 1014 26/08/2006 20:30:00 08:30.00 26 1014 26/08/2006 20:45:00 08:45.00 26 1014 26/08/2006 21:00:00 09:00.00 26 1014 26/08/2006 21:15:00 09:15.00 26 1014 26/08/2006 21:30:00 09:30.00 26 1014 26/08/2006 21:45:00 09:45.00 26 1014 26/08/2006 22:00:00 10:00.00 26 1014 26/08/2006 22:15:00 10:15.00 26 1014 26/08/2006 22:30:00 10:30.00 26 1014 26/08/2006 22:45:00 10:45.00 26 1014 26/08/2006 23:00:00 11:00.00 26 1014 26/08/2006 23:15:00 11:15.00 26 1014 26/08/2006 23:30:00 11:30.00 26 1014 26/08/2006 23:45:00 11:45.00 26 1014 27/08/2006 12:00.00 26 1014 27/08/2006 00:15:00 12:15.00 26 1014 27/08/2006 00:30:00 12:30.00 26 1014 27/08/2006 00:45:00 12:45.00 26 1014 27/08/2006 01:00:00 13:00.00 26 1014 27/08/2006 01:15:00 13:15.00 26 1014 27/08/2006 01:30:00 13:30.00 26 1014 27/08/2006 01:45:00 13:45.00 26 1014 27/08/2006 02:00:00 14:00.00 26 1014 27/08/2006 02:15:00 14:15.00 26 1014 27/08/2006 02:30:00 14:30.00 26 1014 27/08/2006 02:45:00 14:45.00 26 1014 27/08/2006 03:00:00 15:00.00 26 1014 27/08/2006 03:15:00 15:15.00 26 1014 27/08/2006 03:30:00 15:30.00 26 1014 27/08/2006 03:45:00 15:45.00 26 1014 27/08/2006 04:00:00 16:00.00 26 1014 27/08/2006 04:15:00 16:15.00 26 1014 27/08/2006 04:30:00 16:30.00 26 1014 27/08/2006 04:45:00 16:45.00 26 1014 27/08/2006 05:00:00 17:00.00 26 1014 27/08/2006 05:15:00 17:15.00 26 1014 27/08/2006 05:30:00 17:30.00 26 1014 27/08/2006 05:45:00 17:45.00 26 1014 27/08/2006 06:00:00 18:00.00 26 1014 27/08/2006 06:15:00 18:15.00 25 1014 27/08/2006 06:30:00 18:30.00 25 1014 27/08/2006 06:45:00 18:45.00 25 1014 27/08/2006 07:00:00 19:00.00 25 1014 27/08/2006 07:15:00 19:15.00 25 1014 27/08/2006 07:30:00 19:30.00 25 1014 27/08/2006 07:45:00 19:45.00 25 1014 27/08/2006 08:00:00 20:00.00 25 1014 27/08/2006 08:15:00 20:15.00 25 1014 27/08/2006 08:30:00 20:30.00 25 1014 27/08/2006 08:45:00 20:45.00 25 1014 27/08/2006 09:00:00 21:00.00 25 1014 27/08/2006 09:15:00 21:15.00 26 1014 27/08/2006 09:30:00 21:30.00 26 1014 27/08/2006 09:45:00 21:45.00 26 1014 27/08/2006 10:00:00 22:00.00 26 1014 27/08/2006 10:15:00 22:15.00 26 1014 27/08/2006 10:30:00 22:30.00 26 1014 27/08/2006 10:45:00 22:45.00 26 1014 27/08/2006 11:00:00 23:00.00 26 1014 27/08/2006 11:15:00 23:15.00 26 1014 27/08/2006 11:30:00 23:30.00 26 1014 27/08/2006 11:45:00 23:45.00 26 1014 27/08/2006 12:00:00 24:00.00 26 1014 27/08/2006 12:15:00 24:15.00 26 1014 27/08/2006 12:30:00 24:30.00 26 1014 27/08/2006 12:45:00 24:45.00 26 1014 27/08/2006 13:00:00 25:00.00 26 1014 27/08/2006 13:15:00 25:15.00 26 1014 27/08/2006 13:30:00 25:30.00 26 1014 27/08/2006 13:45:00 25:45.00 26 1014 27/08/2006 14:00:00 26:00.00 26 1014 27/08/2006 14:15:00 26:15.00 26 1014 27/08/2006 14:30:00 26:30.00 26 1014 27/08/2006 14:45:00 26:45.00 26 1014 27/08/2006 15:00:00 27:00.00 26 1014 27/08/2006 15:15:00 27:15.00 26 1014 27/08/2006 15:30:00 27:30.00 27 1014 27/08/2006 15:45:00 27:45.00 27 1014 27/08/2006 16:00:00 28:00.00 27 1014 27/08/2006 16:15:00 28:15.00 27 1014 27/08/2006 16:30:00 28:30.00 27 1014 27/08/2006 16:45:00 28:45.00 27 1014 27/08/2006 17:00:00 29:00.00 27 1014 27/08/2006 17:15:00 29:15.00 27 1014 27/08/2006 17:30:00 29:30.00 27 1014 27/08/2006 17:45:00 29:45.00 27 1014 27/08/2006 18:00:00 30:00.00 27 1014 27/08/2006 18:15:00 30:15.00 27 1014 27/08/2006 18:30:00 30:30.00 27 1014 27/08/2006 18:45:00 30:45.00 28 1014 27/08/2006 19:00:00 31:00.00 28 1014 27/08/2006 19:15:00 31:15.00 28 1014 27/08/2006 19:30:00 31:30.00 27 1014 27/08/2006 19:45:00 31:45.00 27 1014 27/08/2006 20:00:00 32:00.00 27 1014 27/08/2006 20:15:00 32:15.00 27 1014 27/08/2006 20:30:00 32:30.00 27 1014 27/08/2006 20:45:00 32:45.00 27 1014 27/08/2006 21:00:00 33:00.00 27 1014 27/08/2006 21:15:00 33:15.00 27 1014 27/08/2006 21:30:00 33:30.00 27 1014 27/08/2006 21:45:00 33:45.00 27 1014 27/08/2006 22:00:00 34:00.00 27 1014 27/08/2006 22:15:00 34:15.00 27 1014 27/08/2006 22:30:00 34:30.00 26 1014 27/08/2006 22:45:00 34:45.00 26 1014 27/08/2006 23:00:00 35:00.00 26 1014 27/08/2006 23:15:00 35:15.00 26 1014 27/08/2006 23:30:00 35:30.00 26 1014 27/08/2006 23:45:00 35:45.00 26 1014 28/08/2006 36:00.00 26 1014 28/08/2006 00:15:00 36:15.00 26 1014 28/08/2006 00:30:00 36:30.00 26 1014 28/08/2006 00:45:00 36:45.00 26 1014 28/08/2006 01:00:00 37:00.00 26 1014 28/08/2006 01:15:00 37:15.00 26 1014 28/08/2006 01:30:00 37:30.00 26 1014 28/08/2006 01:45:00 37:45.00 26 1014 28/08/2006 02:00:00 38:00.00 26 1014 28/08/2006 02:15:00 38:15.00 26 1014 28/08/2006 02:30:00 38:30.00 26 1014 28/08/2006 02:45:00 38:45.00 26 1014 28/08/2006 03:00:00 39:00.00 26 1014 28/08/2006 03:15:00 39:15.00 26 1014 28/08/2006 03:30:00 39:30.00 26 1014 28/08/2006 03:45:00 39:45.00 26 1014 28/08/2006 04:00:00 40:00.00 26 1014 28/08/2006 04:15:00 40:15.00 26 1014 28/08/2006 04:30:00 40:30.00 26 1014 28/08/2006 04:45:00 40:45.00 26 1014 28/08/2006 05:00:00 41:00.00 26 1014 28/08/2006 05:15:00 41:15.00 26 1014 28/08/2006 05:30:00 41:30.00 26 1014 28/08/2006 05:45:00 41:45.00 26 1014 28/08/2006 06:00:00 42:00.00 26 1014 28/08/2006 06:15:00 42:15.00 26 1014 28/08/2006 06:30:00 42:30.00 26 1014 28/08/2006 06:45:00 42:45.00 26 1014 28/08/2006 07:00:00 43:00.00 26 1014 28/08/2006 07:15:00 43:15.00 26 1014 28/08/2006 07:30:00 43:30.00 26 1014 28/08/2006 07:45:00 43:45.00 26 1014 28/08/2006 08:00:00 44:00.00 27 1014 28/08/2006 08:15:00 44:15.00 27 1014 28/08/2006 08:30:00 44:30.00 27 1014 28/08/2006 08:45:00 44:45.00 27 1014 28/08/2006 09:00:00 45:00.00 27 1014 28/08/2006 09:15:00 45:15.00 27 1014 28/08/2006 09:30:00 45:30.00 27 1014 28/08/2006 09:45:00 45:45.00 27 1014 28/08/2006 10:00:00 46:00.00 27 1014 28/08/2006 10:15:00 46:15.00 27 1014 28/08/2006 10:30:00 46:30.00 27 1014 28/08/2006 10:45:00 46:45.00 27 1014 28/08/2006 11:00:00 47:00.00 27 1014 28/08/2006 11:15:00 47:15.00 27 1014 28/08/2006 11:30:00 47:30.00 27 1014 28/08/2006 11:45:00 47:45.00 27 1014 28/08/2006 12:00:00 48:00.00 27 1014

< 05 00 03 5d 00 04 59 | ] Y > 05 00 07 5d 00 04 3d 28 25 3c | ] =(%< > 55 | U < 05 00 03 5d 00 04 59 | ] Y > 05 00 07 5d 00 04 3d 28 25 3c | ] =(%< > 55 | U < 05 00 03 b4 0f 14 af | > 05 00 17 b4 0f 14 00 00 00 00 | > 00 00 00 00 00 00 00 00 00 00 | > 00 00 00 00 00 00 af | < 05 00 03 c9 19 1e ce | > 05 00 21 c9 19 1e 00 00 00 00 | ! > 00 00 00 00 00 00 00 00 00 00 | > 00 00 00 00 00 00 00 00 00 00 | > 00 00 00 00 00 00 ce | < 05 00 03 70 0d 32 4f | p 2O > 05 00 35 70 0d 32 ac 03 f6 1b | 5p 2 > 03 f6 1b 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 e0 | < 05 00 03 a2 0d 32 9d | 2 > 05 00 35 a2 0d 32 f6 1a 03 f6 | 5 2 > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 71 | q < 05 00 03 d4 0d 32 eb | 2 > 05 00 35 d4 0d 32 03 f6 1a 03 | 5 2 > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1e | < 05 00 03 06 0e 32 3a | 2: > 05 00 35 06 0e 32 1a 03 f6 1a | 5 2 > 03 f6 1a 03 f6 1a 03 f6 19 03 | > f6 19 03 f6 19 03 f6 19 03 f6 | > 19 03 f6 19 03 f6 19 03 f6 19 | > 03 f6 19 03 f6 19 03 f6 19 03 | > f6 19 03 f6 1a 03 23 | # < 05 00 03 38 0e 32 04 | 8 2 > 05 00 35 38 0e 32 f6 1a 03 f6 | 58 2 > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a e8 | < 05 00 03 6a 0e 32 56 | j 2V > 05 00 35 6a 0e 32 03 f6 1a 03 | 5j 2 > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1b | > 03 f6 1b 03 f6 1b 03 f6 1b 03 | > f6 1b 03 f6 1b 03 f6 1b 03 f6 | > 1b 03 f6 1b 03 f6 a2 | < 05 00 03 9c 0e 32 a0 | 2 > 05 00 35 9c 0e 32 1b 03 f6 1b | 5 2 > 03 f6 1b 03 f6 1b 03 f6 1c 03 | > f6 1c 03 f6 1c 03 f6 1b 03 f6 | > 1b 03 f6 1b 03 f6 1b 03 f6 1b | > 03 f6 1b 03 f6 1b 03 f6 1b 03 | > f6 1b 03 f6 1b 03 bf | < 05 00 03 ce 0e 32 f2 | 2 > 05 00 35 ce 0e 32 f6 1b 03 f6 | 5 2 > 1b 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 1e | < 05 00 03 00 0f 32 3d | 2= > 05 00 35 00 0f 32 03 f6 1a 03 | 5 2 > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 c8 | < 05 00 03 32 0f 32 0f | 2 2 > 05 00 35 32 0f 32 1a 03 f6 1a | 52 2 > 03 f6 1a 03 f6 1a 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1b 03 f6 | > 1b 03 f6 1b 03 f6 1b 03 f6 1b | > 03 f6 1b 03 f6 1b 03 f6 1b 03 | > f6 1b 03 f6 1b 03 16 | < 05 00 03 64 0f 32 59 | d 2Y > 05 00 35 64 0f 32 f6 1b 03 f6 | 5d 2 > 1b 03 f6 1b 03 f6 1b 03 f6 1b | > 03 f6 1b 03 f6 1b 03 f6 1a 03 | > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a | > 03 f6 1a 03 f6 1a b4 | < 05 00 03 96 0f 1e 87 | > 05 00 21 96 0f 1e 03 f6 1a 03 | ! > f6 1a 03 f6 1a 03 f6 1a 03 f6 | > 1a 03 f6 1a 03 f6 1a 03 f6 1a |

}}}

Hypotheses sur le protocole de communication

Le premier octet correspond au type de commande 05 correspond a la lecture, 06 a l'ecriture (jamais teste). Le second et le troisieme octets definisent la longueur de la trame (avant le checksum). Le dernier correspond au checksum.

Si la trame provient de la montre : le checksum s'obtient en effectuant un Xor entre les bits des octets 2 a 2 recursivement entre le 4eme et l'avant dernier octet de la trame. Si la trame provient du PC, le checksum s'applique sur la totalite de la trame a l'exception du dernier octet (le checksum). Il est calcule comme precedement mais ne commence pas avec un octet nul mais avec 0x06.

Lors de l'operation de lecture (05) envoyee par le PC, octets 4 et 5 definissent la position dans la memoire et l'octet 6 la longueur de la trame a lire.

Identified memory addresses

Memory address are 16 bits (2 bytes) little endian(?) meaning that the most significant byte is the second one.

  • General parameters of the watch (units, ...) are coded on adress 64 00 over 11 bytes

  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18
<05 00 03 64 00 0b 6f 
>05 00 0e 64 00 0b 00 01 00 01 00 01 02 01 01 ff 00 93 

Meaning of byte number :

  • 7 : bip off(00) / on(01)
  • 8 : icon off(00) / on(01)
  • 9 : light normal(00) / off (01) / Night (02?)
  • 10: 12h (00) / 24h (01)
  • 11: date ? MM.DD(00) / DD.MM(01) / Day(02)
  • 12: altitude ft(00) / m(01)
  • 13: ascentional speed m/s(00) / m/mn(01) / m/h(02) / ft/s(03) / ft/mn(04) / ft/h(05)
  • 14: pression inHg(00) / hPa(01)
  • 15: temperature F(00) / C (01)

byte 16 et 17 ??

  • Max altitude is coded on address 48 0d

<  05 00 03 48 0d 12 57
>  05 00 15 48 0d 12 06 08 0f 2b 0a 

Max altitude was reached on (20)06/08/15 and the value is 2b 0a as a short integer (16 bits little endian) meening 2603m

Weather log

Weather log are 2 day long, one data point every 15mn, so 193 data

The SAM software reads 11 blocks of 50 bytes (0x32) starting from 07 0d to 64 0f (ending at 1e 0f), then 30 bytes from 1e 0f to b4 of. 580 byte were read, making 3 byte per log-point. one byte is dedicated to the temerature (1a or 1b in this log (26 or 27C) and 2 bytes for pression (in big endian short integer)

il ne reste plus beaucoup d'informations non comprises : "28 25 3c".

Conclusion

Si vous etes interesse par ce projet, vous pouvez me contacter par courier electronique a jerome AT terre-adelie POINT org

Terre-Adélie: SuuntoX6HR (last edited 2009-06-07 13:30:12 by localhost)