<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1595"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1595/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1595/atom/feed</id>
  <updated>2008-07-21T15:37:30+02:00</updated>
  <entry>
    <title>Système de navigation GPS</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1595" />
    <id>http://artisan.karma-lab.net/node/1595</id>
    <published>2008-07-21T11:22:43+02:00</published>
    <updated>2008-07-21T15:37:30+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Matériel" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
  Il y a longtemps que j'avais envie d'un GPS pour palier à mon terrible sens de l'orientation et enfin cesser de me perdre. Il y a longtemps aussi que j'avais envie de coller ce type de dispositif sur le Zaurus sans jamais sauter le pas. Avec l'arrivée de <a class='external' target='_blank' href='/node/1587' >l'U810</a> et les précieux conseils <a class='external' target='_blank' href='/node/1583%2523comment-2591' >Orgoz</a>, c'est maintenant chose faite. Reste maintenant à mettre tout cela en musique...
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  Il y a longtemps que j'avais envie d'un GPS pour palier à mon terrible sens de l'orientation et enfin cesser de me perdre. Il y a longtemps aussi que j'avais envie de coller ce type de dispositif sur le Zaurus sans jamais sauter le pas. Avec l'arrivée de <a class='external' target='_blank' href='/node/1587' >l'U810</a> et les précieux conseils <a class='external' target='_blank' href='/node/1583%2523comment-2591' >Orgoz</a>, c'est maintenant chose faite. Reste maintenant à mettre tout cela en musique...
</p>
<!--break-->

	<a name='chapter_6'></a>
  <h2>Matériel</h2>
	
<p>
  Je cherchais un récepteur bluetooth 100% fonctionnel sous Linux et Orgoz m'avait conseillé le Globalsat BT-338. Il est donc arrivé, 60€ et 2 jours plus tard. Et rien qu'au déballage il y avait de quoi être satisfait. Il est fournit avec une batterie Lithium-ions, un chargeur mural ET un chargeur allume-cigares. Le look est un peu moche mais l'interface est ultra simple : trois diodes (charge, localisation et bluetooth) et un unique bouton pour l'allumer et l'éteindre. 
</p>
<p>
   Mais l'aspect le plus intéressant est qu'il localise ses satellites très rapidement. Guère plus de 5 secondes dans mon cas, et en intérieur... En bref une bonne impression. Ne restait plus qu'à tester sous GNU/Linux.
</p>


	<a name='chapter_7'></a>
  <h2>Teste de réception</h2>
	
<p>
   La première chose à vérifier est bien évidement que le bluetooth fonctionne. Un simple <kbd>/etc/init.d/bluetooth restart</kbd> devrait faire l'affaire. Ensuite, allumez le BT-338 et lancez une détection :

  <div class='code-block code-block-traces'>
  <div class='container'>
  <div class='command'><span class='prompt'>root#</span>hcitools scan</div><div class='result'>Scanning ...</div><div class='result'>00:0D:B5:38:25:F3	BT-GPS-3825F3</div><div class='command'><span class='prompt'>root#</span><span class='cursor'>&nbsp;</span></div>
  </div>
  
  </div>
</p>
<p>
   Nous avons maintenant l'adresse de notre récepteur GPS. L'étape suivante consiste à lier ce receveur à un port de communication (rfcomm) qui est très semblable à un port série. Nous verrons plus tard comment automatiser tout cela mais pour l'instant il s'agit de test. Nous allons donc créer le lien à la main :

  <div class='code-block code-block-traces'>
  <div class='container'>
  <div class='command'><span class='prompt'>root#</span>rfcomm connect 0 00:0D:B5:38:25:F3</div><div class='result'>Connected /dev/rfcomm0 to 00:0D:B5:38:25:F3 on channel 1</div><div class='result'>Press CTRL-C for hangup</div><div class='command'><span class='prompt'>root#</span><span class='cursor'>&nbsp;</span></div>
  </div>
  
  </div>
</p>
<p>
  Voilà, le récepteur est lié au device <kbd>/dev/rfcomm0</kbd> (de par le paramètre <kbd>0</kbd>), sur le canal <kbd>1</kbd> qui est le canal standard du <kbd>rfcomm</kbd>. Maintenant ouvrons une autre console en root, et commençons par installer le démon chargé de lire les données en provenance du gps, <a class='external' target='_blank' href='http://gpsd.berlios.de/' >gpsd</a>.</p>
<p>
 L'avantage de ce démon est qui va permettre à plusieurs applications d'accéder en même temps aux données GPS en passant par le réseau. Il convient d'abord de l'installer, puis de le lancer en mode "non-démon" (pour les tests une fois encore) :

  <div class='code-block code-block-traces'>
  <div class='container'>
  <div class='command'><span class='prompt'>root#</span>gpsd -N -D 2 /dev/rfcomm0</div><div class='result'>gpsd: launching (Version 2.34)</div><div class='result'>gpsd: listening on port 2947</div><div class='result'>gpsd: successfully connected to the DBUS system bus</div><div class='result'>gpsd: running with effective group ID 0</div><div class='result'>gpsd: running with effective user ID 0</div><div class='result'>gpsd: opening GPS data source at '/dev/rfcomm0'</div><div class='result'>gpsd: speed 9600, 8N1</div><div class='result'>gpsd: garmin_gps not active.</div><div class='result'>gpsd: gpsd_activate(0): opened GPS (5)</div><div class='result'>gpsd: closing GPS=/dev/rfcomm0 (5)</div><div class='command'><span class='prompt'>root#</span><span class='cursor'>&nbsp;</span></div>
  </div>
  
  </div>
</p>
<p>
  le <kbd>-N</kbd> empêche le passage en mode démon, et le <kbd>-D 2</kbd> nous permet de voir ce qui se passe. 
</p>
<p>
  Maintenant il s'agit de lire les coordonnées émises par le boîtier. Dans un premier temps, nous allons utilisez le très simple <kbd>gpsdrive</kbd>. Dans la mesure où il utilise en standard gpsd, il n'y rien à faire d'autre que de le lancer dans une console, mais en tant qu'utilisateur sans privilèges cette fois :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  gpsdrive
  </div>
  
  </div>
</p>
<p>
  Et là, si tout va bien, la console où vous avez lancé <kbd>gpsd</kbD> devrait se mettre à jacasser et sur l'écran de <kbd>gpsdrive</kbd>, vous devriez voir une croix à l'endroit où vous vous trouvez dans le monde ainsi que les coordonnées numériques dans la ligne de statut, en bas de l'écran. 
</p>


	<a name='chapter_8'></a>
  <h2>Automatisation</h2>
	
<p>
   Bon, étape suivante, automatiser tout cela. Pour commencer, nous allons paramétrer la pile bluetooth de sorte à ce que le device <kbd>/dev/rfcomm0</kbd> soit systématiquement associé au récepteur GPS et qu'il soit ainsi créé automatiquement. Pour cela, il faut éditer le fichier <kbd>/etc/bluetooth/rfcomm.conf :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  rfcomm0 <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Automatically bind the device at startup</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">bind</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/yes"><span class="kw2">yes</span></a>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Bluetooth address of the device</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; device <span class="nu0">00</span>:0D:B5:<span class="nu0">38</span>:<span class="nu0">25</span>:F3<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># RFCOMM channel for the connection</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; channel <span class="nu0">1</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Description of the connection</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; comment <span class="st0">&quot;Récepteur GPS&quot;</span><br />
<span class="br0">&#125;</span>
  </div>
  <div class='caption'>/etc/bluetooth/rfcomm.conf</div>
  </div>
</p>
<p>
  Ceci fait, un redémarrage du service bluetooth s'impose (<kbd>/etc/init.d/bluetooth restart</kbd>).
</p>
<p>
  Maintenant vous devriez avoir un device <kbD>/dev/rfcomm0</kbd> même quant le récepteur est éteint.  La tentative de connexion sera automatique lorsqu'un logiciel tenter d'y accéder. 
</p>
<p>
  Pour gpsd, étrangement il n'y a pas, du moins pour Mandriva, de script de démarrage. L'option prise par cette distribution semble être d'utiliser <kbd>udev</kbd>. Je n'ai rien contre cela sauf que cela se base sur le postulat que le kernel est au courrant de tout ce qui est connecté dynamiquement au système. C'est nickel pour un récepteur USB, mais pour un bluetooth, ça marche beaucoup moins bien vu qu'il n'y a pas de découverte dynamique.   Ce n'est pas non plus très malin pour ceux qui utilisent un récepteur via le port RS232C.
</p>
<p>
  Bref, nous en sommes donc quite à créer un petit script de lancement à la mano :  <kbD>/etc/init.d/gpsd</kbd>

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0">#!/bin/bash</span><br />
<span class="co0">#</span><br />
<span class="co0"># chkconfig: 2345 15 15</span><br />
<span class="co0"># description: GPSD</span><br />
<span class="co0"># processname: gpsd</span><br />
<span class="co0"># pidfile: /var/run/gpsd.pid</span><br />
<span class="co0"># confid /etc/sysconfig/gpsd</span><br />
<span class="co0">#</span><br />
<span class="co0">### BEGIN INIT INFO</span><br />
<span class="co0"># Provides: gps</span><br />
<span class="co0"># Should-Start:</span><br />
<span class="co0"># Default-Start: 2 3 4 5</span><br />
<span class="co0"># Short-Description: gpsd</span><br />
<span class="co0"># Description: gpsd</span><br />
<span class="co0">### END INIT INFO</span><br />
<br />
<span class="co0"># source function library</span><br />
. <span class="sy0">/</span>etc<span class="sy0">/</span>rc.d<span class="sy0">/</span>init.d<span class="sy0">/</span>functions<br />
<br />
<span class="re2">GPSDCFG=</span><span class="sy0">/</span>etc<span class="sy0">/</span>sysconfig<span class="sy0">/</span>gpsd<br />
<span class="re2">GPSDDEVICE=</span><span class="sy0">/</span>dev<span class="sy0">/</span>rfcomm0<br />
<br />
<span class="re2">RETVAL=</span><span class="nu0">0</span><br />
<br />
<span class="kw1">case</span> <span class="st0">&quot;$1&quot;</span> <span class="kw1">in</span><br />
&nbsp; start<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; gprintf <span class="st0">&quot;Starting gpsd services: &quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> -f <span class="st0">&quot;$GPSDCFG&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; . <span class="st0">&quot;$GPSDCFG&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> -n <span class="st0">&quot;$device&quot;</span> <span class="br0">&#93;</span>;then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">GPSDDEVICE=</span><span class="sy0">/</span>dev<span class="sy0">/</span><span class="re1">$device</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> -e <span class="re1">$GPSDDEVICE</span> <span class="br0">&#93;</span>;then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gprintf <span class="st0">&quot;%s don't exist<span class="es0">\n</span>&quot;</span> <span class="st0">&quot;$GPSDDEVICE&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="nu0">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; daemon gpsd <span class="re1">$GPSDDEVICE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">RETVAL=</span><span class="re4">$?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span> <span class="re1">$RETVAL</span> -eq <span class="nu0">0</span> <span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/touch"><span class="kw2">touch</span></a> <span class="sy0">/</span>var<span class="sy0">/</span>lock<span class="sy0">/</span>subsys<span class="sy0">/</span>gpsd<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; stop<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; gprintf <span class="st0">&quot;Shutting down gpsd services: &quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; killproc gpsd<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">RETVAL=</span><span class="re4">$?</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span> <span class="re1">$RETVAL</span> -eq <span class="nu0">0</span> <span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/rm"><span class="kw2">rm</span></a> -f <span class="sy0">/</span>var<span class="sy0">/</span>lock<span class="sy0">/</span>subsys<span class="sy0">/</span>gpsd<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; restart<span class="sy0">|</span>reload<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="nu0">0</span> stop<br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="nu0">0</span> start<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">RETVAL=</span><span class="re4">$?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; status<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; status gpm<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">RETVAL=</span><span class="re4">$?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; <span class="sy0">*</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; gprintf <span class="st0">&quot;Usage: gpsd {start|stop|status|restart|reload}<span class="es0">\n</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="nu0">1</span><br />
<span class="kw1">esac</span><br />
<span class="kw3">exit</span> <span class="re1">$RETVAL</span>
  </div>
  
  </div>
</p>
<p>
  Pour que le tout soit lancé au démarrage, rendez le script exécutable (<kbd>chmod +x /etc/init.d/gpsd</kbd>) et lancez ensuite un <kbD> chkconfig --add gpsd</kbd>. 
</p>
<p>
  vous pouvez déjà tester en lançant à la main <kbd>/etc/init.d/gpsd start</kbd> et vérifier par un <kbd>ps -edaf | grep gpsd</kbd> que le process est bien là. Il suffit ensuite de démarrer <kbd>gpsdrive</kbd> pour vérifier que tout fonctionne. Normalement gpsd ne s'offusque pas que le récepteur soit arrêté puis rallumé. 
</p>


	<a name='chapter_9'></a>
  <h2>Applications</h2>
	
<p>
  Maintenant que tout fonctionne, il faudrait quelque chose de plus "velu" que <kbd>gpsdrive</kbd>. J'ai testé un certain nombre d'application mais deux projets m'ont semblés plus aboutis que les autres : <a class='external' target='_blank' href='http://viking.sourceforge.net/mediawiki/index.php/Main_Page' >Viking</a> et <a class='external' target='_blank' href='http://www.navit-project.org/' >NavIt</a>.
</p>
<p>
  Le premier est d'un concept assez intéressant, permettant d'ajouter des couches de calques les unes sur les autres. En commençant par la couche <kbd>GPSLayer</kbd> qui se connecte à <kbd>gpsd</kbd> et en finissant par <kbd>MapLayer</kbd> que l'on peut paramétrer pour aller directement chercher sur GoogleMap en vue carte ou satellite. C'est bien fait, rapide, facile à utiliser mais n'a qu'un seul problème chez moi, il ne lit pas correctement les coordonnées. J'ai peut être loupé une étape dans le paramétrage mais ce gentil logiciel a décidé de me coller au milieu de la luzerne, en plein champs. C'est très gentil de sa part mais pas très concordant avec ce que je vois de ma fenêtre. En pourtant GPSDrive, lui, me donne les bonnes coordonnées. 
</p>
<p>
  Mais mis à part ce "léger" problème qui devrait être réglé lorsque j'arriverais à attraper l'auteur sur iRC, l'outil me parait bien prometteur pour un type d'utilisateur tout particulier qui est la contribution au projet <a class='external' target='_blank' href='http://www.openstreetmap.org/' >OpenStreeMap</a>.
</p>
<p> en effet, <kbD>vicking</kbD> permet de mémoriser les chemins parcourus et de les remonter sur le serveur OSM et ainsi améliorer cet génial système libre de cartographie. A tester donc, dés que je pourrais sortir de mon champ <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif" title="Smiling" alt="Smiling" class="smiley-content"/>
</p>
<p>
  Sinon, l'autre projet extrêmement prometteur est <kbd>NavIt</kbD> qui vise à fournir sous GNU/Linux un outil libre comparable aux logiciels du marché type "TomTom". Il dispose d'une vue 2D du plan de route, mais aussi d'une vue 3D exploitant OpenGL. Il calcule les itinéraires et est même capable de parler pour vous indiquer les directions. 
</p>
<p>
  Pour l'instant <kbd>NavIt</kbd> est au stade "béta" mais le concept marche déjà bien. Mais comme c'est encore expérimental, il vous faudra compiler vous-même votre version (en tout cas pour Mandriva). Cela se fait sans aucun problème mis à part pour la 3D. En effet, <kbd>NavIt</kbd> utilise <a class='external' target='_blank' href='http://quesoglc.sourceforge.net/' >QuesoGLC</a> qui chez moi refuse catégoriquement de compiler pour motif de GLU absent alors que cette librairie et les includes qui vont avec sont bien là. Ce n'est pas bien grave, tout est indépendant et l'on peut compiler en n'utilisant pas la vue 3D. 
</p>
<p>
  Une fois compilé et installé, il vous faut un fichier de configuration. Pour cela créez le dossier <kbd>~/.navit</kbD> et recopiez y le fichier le fichier <kbd>navit.xml</kbd> qui se trouve dans les sources.
</p>
<p>
  Ensuite il suffit de taper <kbd>navit</kbd> pour que ce dernier se lance sans problèmes et récupère bien la bonne position via <kbd>gpsd</kbd>. Le problème est qu'il n'a en standard qu'une carte de l'Allemagne. Pour avoir quelque chose d'exploitable en france, la solution est d'utiliser <kbd>OpenStreetMap</kbd>. Pour cela :
<ul>
<li>Allez sur le site http://www.openstreetmap.org/</li>
<li>Affichez la zone que vous voulez exporter.</li>
<li>Allez dans l'onglet <kbd>Export</kbd>.</li>
<li>Cliquez sur <kbd>Manually select a different area</kbd>.</li>
<li>Sélectionnez votre zone à exporter.</li>
<li>Cochez sur <kbd>OpenStreetMap XML Data</kbd>.</li>
<li>Clickez sur <kbd>Export</kbd>.</li>
</uL>
</p>
<p>
  Au bout d'un temps, vous devriez recevoir un fichier <kbd>map.osm</kbd>. Une fois ce fichier téléchargé, il faut le convertir au format <kbd>NavIt</kbd> :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  osm2navit ~<span class="sy0">/</span>Bureau<span class="sy0">/</span>map.osm <span class="sy0">&gt;</span> ~<span class="sy0">/</span>.navit<span class="sy0">/</span>maCarte.bin
  </div>
  
  </div>
</p>
<p>
   La conversion terminée, éditez comme suit le fichier <kbd>~/.navit/navit.xml</kbD> :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  &nbsp;<span class="sc3"><span class="re1">&lt;mapset</span> <span class="re0">enabled</span>=<span class="st0">&quot;yes&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp;<span class="sc3"><span class="re1">&lt;map</span> <span class="re0">type</span>=<span class="st0">&quot;binfile&quot;</span> <span class="re0">enabled</span>=<span class="st0">&quot;yes&quot;</span> <span class="re0">data</span>=<span class="st0">&quot;~/.navit/maCarte.bin&quot;</span> <span class="re2">/&gt;</span></span><br />
&nbsp;...<br />
<span class="sc3"><span class="re1">&lt;/mapset<span class="re2">&gt;</span></span></span>
  </div>
  
  </div>
</p>
<p>
  Faite attention à ne pas ajouter cela dans un <kbd>mapset</kbd> qui ne soit pas <kbd>enabled</kbd>. Vous pouvez si vous le désirez supprimer les autres <kbD>map</kbd>. Ensuite il suffit de relancer <kbd>navit</kbd> et si vos coordonnées GPS sont sur la carte que vous avez importer, votre localisation devrait se faire. 
</p>
<p>
  Il existe aussi une extraction automatique de la carte de l'hexagone disponible <a class='external' target='_blank' href='http://hexagone.openstreetmap.fr/hexagone-latest.osm.bz2' >ici</a>. Attention, le fichier compressé fait plus de 50mo. 
</p>


	<a name='chapter_10'></a>
  <h2>Conclusion</h2>
	
<p>
  NavIt est clairement en phase de développement mais dispose déjà des fonctions de base qui permettent de suivre un itinéraire sans encombres sous réserve que la carte soit complète. En région parisienne, OpenStreetMap est plutôt précis, maintenant je ne saurais dire ce qu'il en est ailleurs. Mais avec Viking, si chez vous il donne les bonne coordonnées, vous allez pouvoir aider ce projet à s'affiner. Une manière simple pour qui n'est pas développeur de participer à l'édifice libre.  
</p>
<p>
  Pour ce qui est du BT-338, il marche vraiment très bien. La capture des satellites est très rapide, il est détecté sans aucun problème et à chaud par le système, bref, un achat conseillé pour GNU/Linux. 
</p>    ]]></content>
  </entry>
</feed>
