Google
  Web www.gpspassion.com
fiogf49gjkf0d


GpsPasSion Partners



Versions

Links/Liens




Portal/Portail
Rechercher

- -

Polls/Sondages
Sondage
Pour vous guider sur la Route :
GPS Mobile (SEM)
GPS Intégré
Smartphone
Autre
Voter  -  Résultat des votes
Votes : 2805




Club GpsPasSion
Soutenez le site!

USA: (US$)
EUROPE: (€)
Guide Paypal


GpsPasSion Forums
Home | Profile | Register/Enregist. | Active Topics | Search/Recherche | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Systèmes Embarqués et Autonomes et Kits PDA
 TomTom GO, ONE, RIDER - www.GOtomtom.com
 QuickFix et Linux

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

  Check here to include your profile signature.
Check here to subscribe to this topic.
    

T O P I C    R E V I E W
kikinou Posted - 27 avr. 2007 : 10:26:50
Bonjour Messieurs,

Un peu cherché mais pas trouvé sur le forum, donc voici ma question :

J'envisage sérieusement de me passer de Microsoft. La conséquence de ceci est l'impossibilité d'utiliser TomTom Home ; le plus génant étant l'update du QuickFix.

Mon choix est donc Linux.

Y'a-t-il un moyen de télécharger directement (fichier) les QuickFix
sur le site de TomTom et de mettre à jour directement sur le TomTom via le lecteur monté ?

Merci à tous !

Kik'
15   L A T E S T    R E P L I E S    (Newest First)
gpe Posted - 09 juin 2007 : 00:00:13
Voici le script que finalement j'utilise. Il permet moins de chose car je ne souhaite pas le lancer à la main et je ne veux pas qu'il me démonte le Tomtom à la fin.
Il ne marche que pour Gnome car je me base sur gnome-session pour trouver l'utilisateur courant et faire le montage via pmount. Pour savoir si il faut faire la mise à jour je ne me base que sur la date du fichier packedephemeris.ee pour avoir une mise à jour tous les jours. Si on veut plus d'espace entre les mises à jours il suffit de changer le paramètre mtime du find.

#!/bin/bash
#DEBUG=1
if [ "$DEBUG" == 1 ]
then
set -x
file=/tmp/majephem$$
else
file=/dev/null
fi
exec >>${file} 2>&1

Name="majephem"
SU=/bin/su
ENV=/usr/bin/env

function atexit {
case $? in
0)
message="Mise à jour effectuée"
;;
1)
message="Erreur de montage"
;;
2)
message="Déjà à jour"
;;
3)
message="Erreur de téléchargement de packedephemeris.ee"
;;
4)
message="Répertoire ephem non présent, création impossible"
;;
5)
message="Erreur de copie"
;;
esac
logger -t ${Name} ${message}
[ -f /tmp/ephe$$ ] && rm /tmp/ephe$$
}

trap atexit EXIT

USER=`ps aux | grep -m1 gnome-session | cut -f1 -d " "`
HOME=/home/${USER}
${SU} ${USER} -c "$ENV HOME=$HOME pmount -t vfat /dev/tomtomone TOMTOMONE" || exit 1

# si le répertoire ephem n'existe pas on le crée
[ ! -d /media/TOMTOMONE/ephem ] && { mkdir /media/TOMTOMONE/ephem || exit 4 ; }
# teste la date du fichier packedephemeris.ee si la dernière modif a moins d'un jour on sort
[ -f /media/TOMTOMONE/ephem/packedephemeris.ee ] && find /media/TOMTOMONE/ephem/packedephemeris.ee -mtime -1 | grep . && exit 2
# met à jour ou crée les fichiers
wget -T 7 -t 3 -q -O /tmp/ephe$$ http://service.mio-tech.com/eeservice/packedephemeris.ee || exit 3
echo "Expiry="`date +%s --date '7 days'` > /media/TOMTOMONE/ephem/ee_meta.txt
cp /tmp/ephe$$ /media/TOMTOMONE/ephem/packedephemeris.ee || exit 5
logger -t ${Name} "Validité: `date +"%A %d %B %Y" --date '7 days'`"
exit 0
gpe Posted - 03 juin 2007 : 14:19:37
quote:
Originally posted by gpe

Euh? Vous êtes sûrs que les éphémérides de Mio sont compatibles avec le Tomtom?


Je me réponds à moi-même.
J'ai fais le test et les fichiers sont bien identiques donc pas de soucis.
JoeKer Posted - 30 mai 2007 : 01:13:07
Voici une version prenant en compte les remarques faites dans les posts précédents.
J'espère qu'elle est exempte d'erreurs maintenant ...

#!/bin/bash 
# Auteur : JoeKer pour GpsPassion
# Script inspiré d'un post de "hamelg" sur GpsPassion et des échanges qui s'en sont suivis.
# Amélioré sur les remarques de 'gpe'

Name=TTH_QF_UPD

# Si on a besoin d'un proxy ...
# export http_proxy="http://myproxy.mydomain:myproxyport"

# La fonction Usage et les options '-h' et '-d' n'ont d'intérêt que pour une exécution manuelle
Usage()
{
echo "Usage : 	$0 [-h] [-d]
	-h	Fournit cette aide (option prioritaire).
	-d	mode DEBUG.
	Codes de retour :
	0	Il n'y a pas eu de mise à jour.
	1	Pas de possibilité de créer le répertoire temporaire de montage.
	2	Pas de possibilité de monter le TomTom sur son répertoire.
	3	Le fichier de mise à jour n'a pu être téléchargé.
	4	La mise à jour a été effectuée sur les critères du fichier 'packedephemeris.ee'.
	5	La mise à jour a été effectuée sur les critères du fichier 'ee_meta.txt'.
	6	Le répertoire ephem n'existait plus.
	7	Pas possible de copier le fichier 'packedephemeris.ee' sur le TomTom.
	8	Pas possible de créer le fichier 'ee_meta.txt' sur le TomTom.
	9	Problème avec le répertoire de montage $montage.
	10	Suppression impossible de $montage (non vide ou inexistant.
	11	Démontage et suppression de $montage impossible.
	15	Suite à l'affichage de ce message d'aide.
"
exit 15
}

# Traitement des options de la ligne de commande
# Option '-d' ajoutée pour le test en mode DEBUG
while [ $# != 0 ]
do
	case $1 in
		-h)
		shift
		Usage
		;;
		-d)
		shift
		DEBUG=1
		;;
		*)
		shift
		echo "Pas d'autre option disponible."
		Usage
		;;
	esac
done

# Je ne connaissais pas (et j'ai bien aimé) cette subtilité (exec)
# pour ne pas pas afficher les messages des commandes et messages d'erreur !
{ [ "$DEBUG" == 1 ] && set -x ; } ||exec >>/dev/null 2>&1

# On laisse le temps au système de monter le TomTom
sleep 3

# Je trouve que c'est bien d'avoir une trace dans les logs.
logger -t $Name "Vérification de la nécessité de mise à jour pour QuickFix ..."

Nettoyage ()
{
retcode=$?
rm -f /tmp/ephe$$

# Si MOUNT différent de 0, il faut démonter le TomTom mais il faut attendre quelques secondes ...
RET=8
if [ $MOUNT = 1 ] && ( mount |grep $montage )
then
	if !   umount $montage  
	then
		logger -t $Name "Impossible de démonter le TomTom de $montage. Vérifier et corriger ..." && RET=$((RET + 1))
	fi
fi
if [ $MOUNT = 1 ]
then
	if ! { [ -d $montage ] && rmdir  $montage ; }
	then
		logger -t $Name "Impossible de supprimer le répertoire $montage (non vide ou inexistant)." && RET=$((RET + 2))
	fi
fi

if [ $RET != 8 ]
then
	exit $RET
fi

# On trace la fin d'exécution dans les logs et le status.
logger -t $Name "Le répertoire de montage était $montage."
case $retcode in
	0)
	Mess="Quickfix semble à jour."
	;;
	1)
	Mess="Impossible de créer le répertoire temporaire de montage. Code de retour 1."
	;;
	2)
	Mess="Impossible de monter le TomTom. Est-il bien connecté ? Code de retour 2."
	;;
	3)
	Mess="Impossible de télécharger la mise à jour. Code de retour 3."
	;;
	4)
	Mess="QuickFix a été mis à jour : 'ee_meta.txt' était absent, corrompu ou trop ancien."
	;;
	5)
	Mess="QuickFix a été mis à jour : 'packedephemeris.ee' était absent"
	;;
	6)
	Mess="Le répertoire 'ephem' du TomTom n'existait plus ou était vide."
	;;
	7)
	Mess="Impossible d'écrire dans le répertoire 'ephem' du TomTom. Est-il branché ? La carte est-elle en état ?"
	;;
	15)
	Mess="Appel de l'aide $Name."
	;;
	*)
	Mess="J'ai oublié de vérifier quelquechose. Le code de Retour était $retcode ! Plus d'info en invoquant $0 avec l'option '-h'."
	;;
esac
logger -t $Name $Mess
sleep 5

}

trap 'Nettoyage' EXIT
# La variable flag sera à 0 en fin de test s'il n'y a pas de mise à jour à faire
flag=3

# La variable MOUNT nous dira s'il faut démonter/remonter le TomTom 
MOUNT=0

# Si le TomTom est monté, on trouve le fichier ttsystem sur la racine du point de montage;
# Dans ce cas, on utilisera le répertoire de montage, sinon on monte sur un répertoire temporaire.
[ -L /dev/tomtom ] && sf=`ls -l /dev/tomtom |cut -d ">" -f2` && montage=`mount |grep $sf |cut -d " " -f3`
[ -n $montage ] && [ -f $montage/ttsystem ] ||  { montage="/tmp/mnt$$" && MOUNT=1 ; }

[ $MOUNT == 1 ] && { mkdir $montage || exit 1 ; } && { mount -t vfat /dev/tomtom $montage || exit 2 ; }

# Le répertoire 'ephem' peut ne pas exister (dans ce cas flag ne sera pas décrémenté).
# Mais il faut continuer la MAJ (pas de 'exit').
[ ! -d $montage/ephem ] &&  mkdir -p $montage/ephem 

# On vérifie l'existence du fichier témoin 'ee_meta.txt';
# on l'exécute dans le shell courant si on l'a trouvé, ce qui nous positionne Expiry comme variable;
# on vérifie si la date courante (en secondes depuis le 1/1/1970 0h0m0s) est inférieure à la valeur enregistré dans 'ee_meta.xt';
# Si les trois conditions précédentes sont vérifiées, on décrémente le flag
# Si une seule des trois n'est pas vérifiée, 
# le flag n'est pas décrémenté -->on doit tenter la mise à jour.
[ -f $montage/ephem/ee_meta.txt ] && . $montage/ephem/ee_meta.txt && [  $(( `date +%s` - ${Expiry:-0} ))  -le 0 ] &&  flag=$(($flag - 1))

# J'ai laissé le test sur l'ancienneté du fichier 'packedephemeris.ee',
# mais mis en commentaire (TTH ne fait pas cette vérification).
# Le test est fait sur 5 jours
# (au lieu de 1 jour comme proposé initialement par "hamelg"  et repris pas "eloew" sur GpsPassion),
# mais TTH le fait en principe sur 7.
# Pour le flag, même principe, s'il n'est pas décrémenté, il y a lieu de faire la MAJ.
# find $montage/ephem/packedephemeris.ee -mtime -5 && 
[ -f $montage/ephem/packedephemeris.ee ] && flag=$(($flag - 2))


# Si le flag est à zéro, on n'a pas besoin de mettre à jour.
[ $flag = 0 ] && exit 0

# Ce qui m'embête ici, c'est qu'on va chercher chez Mio le fichier de mise à jour
# Si M. TomTom pouvait nous donner la méthose d'authentification, on pourrait aller le chercher "honnêtement"
# sur "sweet.tomtom.com" !!! Merci pour la transparence ! Un comble pour un OS Linux :-(
wget -T 5 -t 2 -q -O /tmp/ephe$$ http://service.mio-tech.com/eeservice/packedephemeris.ee  || exit 3

# Y'a plus qu'à copier le fichier
cp /tmp/ephe$$ $montage/ephem/packedephemeris.ee || exit 7

# Et on met à jour la variable Expiry dans le fichier témoin.
# Comme on peut se passer de perl, je l'ai fait ainsi.
# A vérifier, ça marche avec tous les 'date' sous Linux en principe (mais pas Unix, %s n'est pas standard) ...
echo "Expiry=`date +%s --date='5 days'`" >$montage/ephem/ee_meta.txt ||  exit 8

# Juste pour le plaisir, on distingue la raison de la mise à jour ...
exit $((3 + $flag ))
# Fin du programme



JoeKer
[Edit]
Modifié le test du find sur packedephemeris.ee
Le '\' en fin de ligne ne passe pas dans les posts ...
[/Edit]
JoeKer Posted - 28 mai 2007 : 16:44:38
@gpe
Tu as raison pour le répertoire temporaire de montage. Pour preuve :
Avant d'arriver à quelquechose qui fonctionne correctement, j'ai été obligé de restaurer mon TomTom une fois, mais je n'avais pas compris pourquoi j'avais tout perdu (enfin si : c'était jeudi et il était 1h00 du mat, quand c'est arrivé Et je viens seulement de comprendre ).
Toutefois, je pense qu'il il y a lieu de prévoir un code de retour en plus, de façon à tracer correctement les problèmes dans syslog ...

Pour Zenity, il faudrait peut-être que tu récupères un environnement utilisateur (pb déjà rencontré avec les commandes en crontab ...). As-tu un terminal associé pour les messages ?

Pour le montage auto, j'utilise KDE (affaire de goût), et ça diffère de Gnome ... Il vaut peut-être mieux jouer avec la fstab pour éviter ce souci ... J'ai fait le montage automatique avec KDE, mais si je me connecte en 'init 3', par exemple, l'interface graphique ne sera pas lancée, le fonctionnement ne sera pas identique.
De plus, si la carte (le disque pour le 910) a un label sur le TomTom (ma carte d'origine avait "TOMTOM DISK"), le comportement diffère de quand il n'y a pas de label ...
Pour me simplifier la vie, sur ma nouvelle carte SD, j'ai mis "TOMTOM" comme label en attendant ...

Sinon, j'ai vérifié : pas besoin du Myexit en utilisant '$?'. Je me demande où j'ai la tête par moments ... Merci, en tout cas !!!

A+

JoeKer
gpe Posted - 28 mai 2007 : 14:10:04
Pour le [ $MOUNT = 1 ] et [ $MOUNT == 1 ] tu as tout à fait raison!

Pour l'histoire du démontage tu as raison, mais dans ce cas il faut modifier la suite. Je ferais donc ainsi:

mount | grep /tmp/mnt$$ && umount /tmp/mnt$$
[ -d /tmp/mnt$$ ] $$ rmdir /tmp/mnt$$

car si /tmp/mnt$$ n'était pas monté, soit /tmp/mnt$$ n'existe pas et ça évitera un message d'erreur, soit /tmp/mnt$$ existe et il faut s'assurer que c'est bien un répertoire (sinon c'est que ce n'est pas le notre) et si c'est notre répertoire il est fatalement vide donc rmdir qui dans le cas où le répertoire ne serait pas vide échouera plutôt rm -rf qui effacera tout même si ce n'est pas un répertoire.
J'avais aussi essayé d'utiliser zenity pour faire un message d'info signalant que la mise à jour a été faite ou non mais j'avais un problème: quand c'était lancé depuis un shell à la main ça fonctionnait mais pas quand c'était lancé depuis udev.
Pour l'histoire de l'ancienneté, je ne me sens pas obligé de reproduire le fonctionnement de TT surtout quand celui-ci pose problème. Mais tu as raison chacun adaptera comme il veut. ;-)
Pour le log je suis d'accord avec c'est mieux.
Quand j'aurai un peu de temps je me re-pencherais dessus pour voir ce que l'on peut faire pour cette histoire de montage. Notamment voir comment s'enchaîne en temps normal l'action de udev et pmount (le monteur automatique de Gnome).
JoeKer Posted - 28 mai 2007 : 11:19:17
@gpe
Pour Myexit, j'ai essayé plusieurs trucs, et je n'y arrivais pas, mais je crois bien que tu as raison, je devais oublier de récupérer le $? ...
Je réessayerai (ce soir si j'ai le temps !).

Pour "date... '7 days'", tout à fait d'accord.

Pour [ -d /tmp/mnt$$ ] , avec ce que tu proposes, on n'est pas certain que c'est monté, mais au pire, il y aura un message d'erreur (masqué par le exec).
Pour le montage sur /tmp/mnt$$, j'ai gardé ce qu'avait proposé "hamelg", mais ta remarque est pertinente. Tu avais d'ailleurs fait une remarque à hamelg à ce sujet ...

50/50 : [ $MOUNT = 1 ] et [ MOUNT == 1 ] sont tous les deux bons (vérifie dans le man de bash).
Si ma mémoire est bonne, un seul égal pour POSIX, les deux autrement ...
La raison de la variable MOUNT : J'ai considéré qu'il faut remettre les "lieux" dans l'état où ils étaient. Donc, si le TomTom est monté au démarrage du programme, on le remonte, sinon on ne le monte pas.
Ca peut d'ailleurs être amélioré : regarder si le TomTomest monté, récupérer le répertoire de montage et, dans ce cas, travailler avec ce répertoire, sinon, travailler avec le répertoire temporaire, mais ça complique un peu la sortie ...
Pour mémoire, j'ai prévu de pouvoir relancer ce programme à la main (d'où l'utilité de l'option -h pour voir l'aide et les codes de retour), et le TomTom peut être monté ou démonté.

Pour l'ancienneté de 'ee_meta.txt', si on veut être conforme à la méthode TomTom-Home, c'est 7 jours, et ça porte uniquement sur le fichier 'ee_meta.txt'. Je n'ai pas voulu surcharger Mio des rquêtes des TomTom-istes (sauf pour la mise au point), c'est pour ça que je suis resté à 5 jours...
On peut aussi vouloir faire la MAJ sur le fichier 'packedephemeris.ee', donc le test est prévu, mais c'est vrai que ce n'est pas nécessaire.

Maintenant, chacun a le droit d'adapter en fonction ses besoins (avantage de l'Open Source par rapport à la méthode fermée de TomTom-Home ). Le script que j'ai proposé a un avantage, par rapport à ce qui avait été proposé auparavant (et même par rapport à TTH), c'est qu'il trace dans le syslog et /var/log/messages ce qui a été fait par le programme.

Ca ne constitue qu'une base de travail, qui peut encore être enrichie, je l'espère ...

Amitiés.

JoeKer
gpe Posted - 27 mai 2007 : 23:04:19
@JoeKer

Pas besoin de la fonction myexit, il suffit en début de la fonction nettoyage de récupérer le code de sortie en utilisant la variable $? (contient la valeur de retour de la commande précédente)

Pour la date d'expiration la forme que j'utilise:
date +%s --date '7 days'
est tout à fait standard (voir man date), et est plus lisible que le calcul littéral.

A la place de:
mount |grep /tmp/mnt$$ && umount /tmp/mnt$$
il me semble plus élégant d'utiliser:
[ -d /tmp/mnt$$ ] && umount /tmp/mnt$$

par ailleurs je préfère faire le montage dans /media plutôt que /tmp car en cas d'échec du démontage ça permet de le démonter plus facilement à la main ensuite. De plus dans pas mal de distribution /media est le répertoire où doivent être monté les périphériques. Surtout que chez sans un délai d'attente avant de démonter, ça échoue...

[ $MOUNT = 1 ] est faux il faut un double = ( [ $MOUNT == 1 ] )
D'ailleurs je n'ai pas bien compris l'usage de $MOUNT ? Si c'est déjà monté et que tu sais où je ne vois pas l'intérêt de démonter pour remonter ailleurs puis démonter ce montage temporaire pour remonter le montage initial...

Pour le test d'ancienneté du fichier je préfère le faire sur 1 jour comme ça on est certains de pouvoir avoir une mis à jour du QuickFix à chaque fois que l'on branche le TT. La façon de faire de TT Home est pénible car quand tu pars pour quelques jours tu es obligé d'aller effacer les fichiers dans le TT pour forcer la mise à jour et être certains d'avoir 7 jours d'autonomie pour le QuickFix.

Sinon je ne vois pas trop l'intérêt d'aller vérifier la valeur du Expiry dans le fichier et en plus de vérifier en plus la date de modification du fichier packedephemeris.ee ? C'est redondant, non?
JoeKer Posted - 26 mai 2007 : 23:51:14
@gpe
Le grep ne sert à rien.
Chez moi, ça marche bien avec les Ephemerides de chez Mio. Pb de réception ?

@tous
Ci-dessous, un script que j'ai mis au point sur les bases de tout ce qui a pu se dire dans ce topic. J'ai ajouté les messages dans syslog, ça peut-être utile ...


#!/bin/bash 
# Script inspiré d'un post de "hamelg" sur GpsPassion et des échanges qui s'en sont suivis.
# JoeKer pour GpsPassion

# La fonction Usage et l'option -h n'ont d'intérêt que pour une exécution manuelle
# Elles trouvent leur utilité quand on veut comprendre les codes d'erreur dans les logs.
Name=TTH_QF_UPD
Usage()
{
echo "Usage : 	$0 [-h]
	Codes de retour :
	0	Il n'y a pas eu de mise à jour.
	1	Pas de possibilité de créer le répertoire temporaire de montage.
	2	Pas de possibilité de monter le TomTom sur son répertoire.
	3	Le fichier de mise à jour n'a pu être téléchargé.
	4	La mise à jour a été effectuée sur les critères du fichier 'packedephemeris.ee'.
	5	La mise à jour a été effectuée sur les critères du fichier 'ee_meta.txt'.
	6	Le répertoire ephem n'existait plus.
	7	Pas possible de copier le fichier 'packedephemeris.ee' sur le TomTom.
	8	Pas possible de créer le fichier 'ee_meta.txt' sur le TomTom.
	15	Suite à l'affichage de ce message d'aide.
"
exit 15
}

Myexit()
{
# Je ne sais pas comment récupérer le code de retour autrement pour le traiter à la sortie
	echo "$1" >.RC
	exit $1
}

# Traitement des options de la ligne de commande
while [ $# != 0 ]
do
	case $1 in
		-h)
		shift
		Usage
		;;
		*)
		shift
		echo "Pas d'autre option disponible."
		Usage
		;;
	esac
done
		 echo "0" >.RC

# Je trouve que c'est bien d'avoir une trace dans les logs.
logger -t $Name "Vérification de la nécessité de mise à jour pour QuickFix ..."

Nettoyage ()
{
retcode=`cat .RC`
rm -f .RC
rm -f /tmp/ephe$$
 mount |grep /tmp/mnt$$  && umount /tmp/mnt$$
rm -rf /tmp/mnt$$
# On trace la fin d'exécution dans les logs et le status.
case $retcode in
	0)
	Mess="Quickfix semble à jour."
	;;
	1)
	Mess="Impossible de créer le répertoire temporaire de montage. Code de retour 1."
	;;
	2)
	Mess="Impossible de monter le TomTom. Est-il bien connecté ? Code de retour 2."
	;;
	3)
	Mess="Impossible de télécharger la mise à jour. Code de retour 3."
	;;
	4|5)
	Mess="QuickFix a été mis à jour :"
	case $retcode in 
		4)
		fic="ee_meta.txt"
		;;
		5)
		fic="packedephemeris.ee"
		;;
	esac
	Mess="$Mess le fichier $fic était absent ou trop ancien."
	;;
	6)
	Mess="Le répertoire 'ephem' du TomTom n'existait plus ou était vide."
	;;
	7)
	Mess="Impossible d'écrire dans le répertoire ephem du TomTom. Est-il branché ? La carte est-elle en état ?"
	;;
	15)
	Mess="Appel de l'aide $Name."
	;;
	*)
	Mess="J'ai oublié de vérifier quelquechose. Le code de Retour était $retcode ! Plus d'info en invoquant $0 avec l'option '-h'."
	;;
esac
logger -t $Name $Mess

# Si MOUNT différent de 0, il faut remonter le TomTom mais il faut attendre quelques secondes ...
sleep 5
[ $MOUNT = 1 ] && (mount /dev/tomtom /mnt/tomtom  || logger -t $Name "Impossible de remonter le TomTom sur /mnt/tomtom.RC $?")
}

trap 'Nettoyage' EXIT

# Je ne connaissais pas (et j'ai bien aimé) cette subtilité
# pour ne pas pas afficher les messages des commandes et messages d'erreur !
exec >>/dev/null 2>&1

# La variable flag sera à 0 en fin de test s'il n'y a pas de mise à jour à faire
flag=3

# La variable MOUNT nous dira s'il faut démonter/remonter le TomTom 
MOUNT=0

# Si le TomTom est monté, on trouve le fichier ttsystem sur la racine du point de montage;
# Dans ce cas, on démonte le TomTom et on marque qu'on devra le remonter en fin d'exécution
[ -f /mnt/tomtom/ttsystem ] && umount /mnt/tomtom && MOUNT=1

mkdir /tmp/mnt$$ || Myexit 1
mount -t vfat /dev/tomtom /tmp/mnt$$ || Myexit 2

# Le répertoire 'ephem' peut ne pas exister (dans ce cas flag ne sera pas décrémenté).
# Mais il faut continuer la MAJ (pas de Myexit).
[ ! -d /tmp/mnt$$/ephem ] &&  mkdir -p /tmp/mnt$$/ephem 

# On vérifie l'existence du fichier témoin 'ee_meta.txt';
# on l'exécute dans le shell courant si on l'a trouvé, ce qui nous positionne Expiry comme variable;
# on vérifie si la date courante (en secondes depuis le 1/1/1970 0h0m0s) est inférieure à la valeur enregistré dans 'ee_meta.xt';
# Si les trois conditions précédentes sont vérifiées, on décrémente le flag
# Si une seule des trois n'est pas vérifiée, 
# le flag n'est pas décrémenté -->on doit tenter la mise à jour.
[ -f /tmp/mnt$$/ephem/ee_meta.txt ] && . /tmp/mnt$$/ephem/ee_meta.txt && [  $(( `date +%s` - $Expiry ))  -le 0 ] &&  flag=$(($flag - 1))

# J'ai gardé le test sur l'ancienneté du fichier, mais je ne pense pas que TTH fasse cette vérification
# Je fais le test sur 5 jours (au lieu de 1 jour comme proposé initialement par "hamelg")
# et repris pas "eloew" sur GpsPassion), mais TTH le fait en principe sur 7.
# Même principe pour le flag, s'il n'est pas décrémenté, il y a lieu de faire la MAJ.
[ -f /tmp/mnt$$/ephem/packedephemeris.ee ] && find /tmp/mnt$$/ephem/packedephemeris.ee -mtime -5 && flag=$(($flag - 2))

# Si le flag est à zéro, on n'a pas besoin de mettre à jour.
[ $flag = 0 ] && Myexit 0

# Ce qui m'embête ici, c'est qu'on va chercher chez Mio le fichier de mise à jour
# Si M. TomTom pouvait nous donner la méthose d'authentification, on pourrait aller le chercher "honnêtement"
# sur "sweet.tomtom.com" !!! Merci pour la transparence ! Un comble pour un OS Linux :-(
wget -T 5 -t 2 -q -O /tmp/ephe$$ http://service.mio-tech.com/eeservice/packedephemeris.ee  || Myexit 3

# Y'a plus qu'à copier le fichier
cp /tmp/ephe$$ /tmp/mnt$$/ephem/packedephemeris.ee || Myexit 7

# Et on met à jour la variable Expiry dans le fichier témoin.
# Comme on peut se passer de perl, je l'ai fait ainsi.
# A vérifier, ça marche en "bash", mais pas tous les shells ...
echo "Expiry=$(( `date +%s` + (86400 * 5) ))" >/tmp/mnt$$/ephem/ee_meta.txt ||  Myexit 8

# Juste pour le plaisir, on distingue la raison de la mise à jour ...
Myexit $((3 + $flag ))
# Fin du programme


@gpe
J'ai calculé mon "Expiry" en shell, mais c'est peut-être moins standard que ce que tu proposes ...

@tous
Je ne prétends pas avoir fait quelquechose de parfait et complet ...
Commentaires et améliorations bienvenues !

Pour les règles udev, les posts précédents expliquaient bien la situation et les réglages à affectuer.
En résumé :
Savoir si on à "sd?1" (à priori, c'est le cas avec les cartes mémoires),
ou "sd?[!0-9] (systèmes à disque dur ? à mémoire flash intégrée ?).
Il faut donc fouiller dans les logs ...

Pour le montage, je l'ai déclaré en fstab, mais il me reste un truc que j'aimerais éclaircir :
Le fonctionnement de la "hal" : sur mes Linux (PCLinux OS 2007 et Mandriva 2007), j'ai systématiquement un message me demandant quelle action je veux effectuer avant de monter les "usb mass storage". J'aimerais bien écrire quelquechose dans les fichiers de conf de la "hal" pour contourner ce problème.

Bonnes mises à jour à tous !

[EDIT]
Remplacer
[  $(( `date +%s` - $Expiry ))  -le 0 ]
par
$(( `date +%s` - ${Expiry:-0} ))  -le 0 ]


Explication :
Si on a "vidé" le fichier ee_meta.txt de son contenu, la variable $Expiry n'existe pas;
le résultat n'est pas celui attendu (pas de mise à jour).
Cette modification lui apporte 0 comme valeur par défaut.
[/EDIT]
gpe Posted - 26 mai 2007 : 22:12:40
Euh? Vous êtes sûrs que les éphémérides de Mio sont compatibles avec le Tomtom?
Parce que après utilisé cette manip pour mettre à jour mon One et bien il a eu bien du mal à se positionner ensuite. A l'allumage il a effectivement assez rapidement sorite une première position mais fausse et de plus ne captait que très peu de satellite et ensuite il a bien mis 15 minutes avant de réussir à capter un nombre convenable de satellite et à me positionner correctement...
gpe Posted - 26 mai 2007 : 16:51:56
Dans la ligne:
[ -f /tmp/mnt$$/ephem/packedephemeris.ee ] && find /tmp/mnt$$/ephem/packedephemeris.ee -mtime -1 | grep . && exit 0

à quoi sert le grep . ?

Sinon pour éviter un passage par perl je propose de remplacer la ligne:
perl -e 'print "Expiry=" . scalar time() + 3600 * 24 * 7' >/tmp/mnt$$/ephem/ee_meta.txt
par:
echo "Expiry="`date +%s --date '7 days'` > /tmp/mnt$$/ephem/ee_meta.txt

Sinon j'ai un problème lorsque l'on sort sur le mtime le démontage ne se fait pas (Device busy), j'ai donc modifié la fonction atexit comme ceci:

function atexit {
[ -f /tmp/ephe$$ ] && rm /tmp/ephe$$
sleep 5
umount /media/mnt$$
rmdir /media/mnt$$
}
gpe Posted - 25 mai 2007 : 22:28:21
Merci, ça marche chez moi juste en mettant "sd?1" à la place de "sd?" et "ONE" à la place de "ONE (v3)"
eloew Posted - 23 mai 2007 : 15:09:12
Finalement je me suis lancé : j'ai décidé de faire une petite doc de la solution de hamelg. Dites moi ce que vous en pensez et surtout si vous acceptez qu'une telle doc existe (étant données que je ne suis pas à l'origine de la solution) : http://www.eloew.org/tomtom.php
eloew Posted - 23 mai 2007 : 08:27:22
Merci beaucoup pour votre aide et soutient.

Un grand merci pour avoir enfin eu une motivation pour jeter un vrai regard dans udev.

Pour la conclusion, je pense que ça fonctionnait dès le départ, mais je pensais que la fonction atexit était appellée lors de la déconnexion du tomtom (oui je sais... man trap :-) ) et avançant prudemment je n'avais écrit qu'un script qui se contentait de monter le device.

Bref. Pour completer l'information de hamelg : http://doc.ubuntu-fr.org/udev est la même doc en français.

Petit détail pour ceux qui se lancerais dans ce petit script les yeux fermé :
Mon tomtom (GO 910) n'est pas du tout vu de la même façon que le votre. Pour moi, les paramètre qui fonctionne (et que j'ai choisi) :
SUBSYSTEMS=="scsi",DRIVERS=="sd",ATTRS{vendor}=="TomTom ",ATTRS{model}=="GO"
Il faut impérativement voir les paramètres de votre appareil en utilisant udevinfo :
udevinfo -a -p $(udevinfo -q path -n /dev/deviceVuParLeKernel)

@JoeKer
Utilisant depuis quelques temps usbmount pour le montage automatique des "USB Mass Storage devices" je n'avais pas fait gaffe, mais effectivement, et ce n'est pas une erreur, mon disque tomtom est vu par le device /dev/sdb et non pas /dev/sdb1 mais ceci est totalement normal.
JoeKer Posted - 23 mai 2007 : 00:19:51
@eloew
Dans le fichier "/etc/udev/rules.d/zzmyrules.rules", peux-tu essayer de remplacer
KERNEL=="sd?" par KERNEL=="sd?1" sur les deux lignes ?

Je pense que ton problème est le suivant :
Supposons que la carte SD de ton TomTom soit reconnue comme /dev/sdf.
"udev" essaye de monter le "disque" /dev/sdf au lieu de la partition /dev/sdf1. Comme le système de fichier n'est pas valide, le montage n'est pas effectué.
Si c'est çà, tu peux le vérifier :
- le fichier /dev/tomtom doit être lié à /dev/sdf au lieu de /dev/sdf1
- dans les logs (dmesg par exemple), juste après branchement du TomTom, tu as la détection (Vendor: TomTom Model: ONE (v3)) tu dois avoir une erreur de montage de /dev/sdf.
En faisant cette modif, c'est /dev/sdf1 qui sera monté et tout rentrera dans l'ordre.

JoeKer
hamelg Posted - 22 mai 2007 : 21:14:45
Regarde si le script est accéder avec un "ls -lu".
Si oui, tu peux remplacer la ligne :
exec >>/dev/null 2>&1
par
exec >>/tmp/xxx 2>&1

et regarder dans /tmp/xxx l'output pour voir ou le script s'arréte.

GpsPasSion Forums © 2002-2017_GpsPasSion/Manzanite Go To Top Of Page
This page was generated in 0,41 seconds. Powered By: Snitz Forums 2000 Version 3.4.05