image
image
image

Votre IP : 44.214.106.184
Dernier ajout : 29 mars
Visiteurs connectés : 27

image Conception
Développé sous SPIP
Informations légales

image
image
Recherche image

Pratiques et Techniques de la Plaisance

image

Accueil du site > OpenCPN > Articles OpenCPN > Connexion GPS sur Linux (maj janvier 2015)

Rubrique : Articles OpenCPN

__________________________________________________________________________________________________________________

Connexion GPS sur Linux (maj janvier 2015)Version imprimable de cet article Version imprimable

Publié Septembre 2012, (màj Novembre 2015) par : fulup   

Copyright : Les articles sont la propriété de leurs auteurs et ne peuvent pas être reproduits en partie ou totalité sans leur accord
S'identifier pour s'abonner par mail Inscrit aux forum vous pourriez transmettre cette page à un ami plaisancier

Le problème de la détection d’un GPS par Linux :

Pour ne pas avoir de problème avec son GPS, il faut le déclarer dans la liste des périphériques connus et figer son nom de « device ». Par défaut le GPS est vu comme un port TTY /dev/ttyUSBxxx et suite à une limite de OpenCPN son nom va changer en fonction de son ordre de branchement ou des cycles de mise en sommeil, réveil du PC.

Comment faire ?

Utiliser le mode « super utilisateur »

La manip ci après fonctionne parfaitement quel que soit la distribution Linux choisie avec ou sans GPSd et/ou AIS. La Manip à faire n’est pas compliquée mais impose d’utiliser une console en mode super utilisateur car il n’y a pas d’interface graphique correspondant à ce type d’opération.

Les manips suivantes devraient plus être intégrées dans le tutoriel OpenCPN pour Linux, mais comme je ne sais comment ajouter un chapitre au wiki, voici la suite des opérations à faire pour ne plus avoir de problème avec votre nom de « device » GPS sous Linux.

Séquence :

  • 1) repérer le numéro constructeur de votre GPS. Pour cela utiliser la commande « lsusb » la taper deux fois : avec le GPS branché et débranché pour trouver la ligne qui lui correspond. Et noter les deux chiffres derrière « ID » exemple ; 10c4:ea60 de votre GPS.
    - 
  • 2) créer un fichier de règles qui correspondent à votre GPS dans la liste des périphériques connus. avec une ligne de la forme
    - 
    SUBSYSTEM==« tty », ATTRSidVendor==« 10c4 », ATTRSidProduct==« ea60 », SYMLINK=« gps-usb »
    en replaçant 10c4 et ea60 par les valeurs correspondants à votre GPS le fichier doit avoir un nom comme 70-persistent-usb-gps.rules
    - 
  • 3) placer le fichier dans le répertoire /etc/udev/rules.d/
    - 
  • 4) relancer le gestionnaire de périphérique pour valider votre fichier de configuration commande : « sudo restart udev » A noter que si « sudo restart UDEV » fonctionnne sur Ubunty/Mint sur OpenSuSE.CentOs, la commande doit etre prefixée par « systemctl » il faut donc taper « sudo systemctl restart udev »

- 

  • 5) débrancher et rebrancher votre GPS (qui est maintenant connus) A chaque fois que vous le branché Linux va créer le périphérique /dev/gps-usb avec toujours le même nom.
    • 5.5 [Autoriser l’accès aux périphériques RS232]. Depuis 2013 l’installation par défaut de tous les Linux bloque l’acces direct au périphériques USB et donc en standard interdit à OpenCPN d’utiliser les GPS/USB. Pour autoriser cet acces vous devez valider la commande suivante : « sudo usermod -a -G dialout $LOGNAME » Attention : cette commande n’est prise en compte qu’après une déconnexion/reconnexion ou un reboot de la machine.

- 

  • 6) Aller dans open CPN et entrer /dev/gps-usb comme périphérique. Attention il faut taper le nom à la main car il n’apparaît pas dans la liste de périphériques par défaut.
    - 
  • 7) Vous pouvez maintenant, éteindre et rallumer votre PC sans problème, Opencpn retrouvera toujours votre GPS (il doit toutefois être branché avant le lancement du programme). La manip fonctionne aussi pour un AIS et avec GPSd.

Nota :

- 
Voir cette vidéo explicite et bien détaillée  : installation GPS/USB Linux

UP


Répondre à cet article
(pour répondre à un message en particulier, voir plus bas dans le fil)

18 Messages de forum

__________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________

  • 23 septembre 2012 00:29, par brunoo écrire     UP  image

    salut, c’est justement le problème que je voudrais régler ... merci. par contre, très bète question d’un marin néophite en pgms, comment passe t on en superuser ? merci
    Bruno

    Répondre à ce message

    • 23 septembre 2012 09:58, par fulup écrire     UP     Ce message répond à ...

      il faut ouvrir une console et taper ’sudo bash" après avoir confirmé son password, on est en root. Le prompt change et ce termine par un # pour notifier le changement. Toutes les commandes passer par la suite seront exécuter en superuser. L’autre option est de mettre sudo devant toutes les commandes.

      PNG

      Répondre à ce message

  • 22 octobre 2012 00:24, par jpiebrig écrire     UP  image

    Bonjour,

    Cela ne fonctionne que si le GPS est directement USB et non pas connecté par une interface USB/Série (ou alors il n’en faut qu’une seule. Ou de marques différentes). Ceci est également valable pour les autres périphériques.
    Car si l’on doit passer par des convertisseur USB/Série, alors la commande « lsusb » ne ramène que les numéros vendeur et appareil de l’interface USB/Série.
    Le problème est que lorsque l’on a 3 ou 4 appareils branchés de cette façon, il n’est plus possible de créer une règle car tous les identifiants sont identiques (encore une fois avec des interfaces de même marque), quelque soit le périphérique derrière l’interface.
    S’il y a une solution à cela, je suis preneur (en dehors de racheter des interfaces de marques et modèles différents ;-)).

    Jean-Pierre

    Répondre à ce message

    • Jean Pierre, la commande LSUSB fonctionne quelques soit le type de périphérique USB. La technique citée peux donc être utilisée pour fixer un nom de périphérique à tous les appareils connectés en USB qu’ils passent par un convertisseur ou non. La seul contrainte c’est effectivement qu’il ne faut pas avoir deux périphériques identiques dans le system au même moment, car il serait alors impossible de les reconnaître par leur numéro d’identification.

      Dans le cas ou on aurait deux convertisseurs USB/RS232 identiques (ex : un pour le GPS et l’autre pour l’AIS) on doit fixer le nom par rapport à la prise USB avec une commande de type :
      SUBSYSTEM==« tty », ATTRSidVendor==«  ?* », ATTRSidProduct==«  ?* », SYMLINK=« gps-$envID_PATH »
      C’est toutefois moins pratique que d’avoir un nom fixe indépendant de la position de branchement. Si vous avez deux convertisseur USB/Série, je vous conseille donc d’avoir deux de marques différentes, à moins de 5€ l’adaptateur sur eBay çà ne vaut pas le peine de se poser des questions.

      A noter que la plupart des GPS souris sont connecté en direct USB, et ne passe donc pas par un convertisseur série externe. Bien évidemment en interne il y à un convertisseur, mais qui est en général un convertisseur TTL/USB et non pas RS232/YUSB. Au final ça ne change rien, car tous les GPS sont vue comme des terminaux RS232 par Linux.

      Conclusion : si vous avez plusieurs convertisseur à brancher regarder sur http://shop.ebay.fr/i.html?rt=nc&am... et chercher un modèle à moins de 5€ port compris.

      Répondre à ce message

  • 22 octobre 2012 21:54, par jpiebrig écrire     UP  image

    Fulup,

    L’an dernier, j’avais fait la manipulation dont vous parlez dans votre premier post. Cela fonctionnait bien pour les interfaces USB/Série différentes, jusqu’à ce qu’elles partent en fumée.
    Merci donc pour cette dernière solution (soft), je ne change jamais mes interfaces de place et j’espère que cela va fonctionner en attendant une solution matérielle. Je vais l’essayer dès que j’ai du temps. Mais qu’en est-il lorsque l’on doit passer par un hub usb ? Cela ne posait pas de problème avec le distinguo des identifiants vendeur et appareil, mais là ?

    Par contre l’achat sur Ebay ou autre, que je pratique depuis quelques années, est totalement aléatoire car il n’existe pas 36 fabricants d’interfaces. Les plus connus étant sans doute Prolific et FTDI et l’on retrouve leur électronique sous une quantité d’habillages.
    J’en ai eu personnellement jusqu’à 4 modèles extérieurement différents avec la même électronique à l’intérieur donc toujours les mêmes identifiants :
    Bus 002 Device 012 : ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

    Lors de mes derniers achats j’ai eu la chance de trouver du QuinHeng ce qui me permet d’avoir des éléments d’identification séparés :
    Bus 002 Device 010 : ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

    J’ai malheureusement brûlé toutes mes interfaces FTDI et les anciennes Prolific en milieu de saison, ce qui m’en aurait fait quatre différentes. Et c’est mon besoin.

    Sur la photo les modèles identiques de droite sont en fait différents, l’un un Prolific et l’autre un QuinHeng et quant aux modèles de gauche complètement différents, ils sont en fait identiques : ce sont deux Prolific ! Allez y comprendre quelque chose.

    Le plus simple, c’est d’en prendre un paquet et d’échanger par la suite au hasard des rencontres (c’est un appel au peuple...).

    Jean-Pierre

    PNG

    Répondre à ce message

  • 22 octobre 2012 23:08, par fulup écrire     UP

    Je crois me souvenir que le nom du chemin est prévu pour supporter les hubs, mais j’ai pas ce qu’il faut sous la main pour faire le test. En fait le path ID correspond à l’identifiant du chemin sur le bus virtuel de la couche d’abstraction hardware, c’est d’ailleurs pour ça que ce nom est aussi long et déplaisant à taper à la main. Il est prudent d’ouvrir une console de faire un « ls /dev/gps* » et de faire un copier/coller.

    Sinon pour eBay, je confirme qu’on peu effectivement se retrouver avec des ID équivalents malgré des habillages différents. Les constructeurs Chinois paient que très rarement pour avoir un ID de fabricant spécifiques, et du coup on se retrouve souvent avec l’ID du composant de l’interface TTL/RS232 vers USB (Prolific, FTDI, ..). Ceci dit en achetant les composants avec plus de 6 mois d’écart en général au moins un des chiffres change. L’autre option pour savoir ce qu’on achète est de choisir un site sérieux comme https://www.sparkfun.com/categories/71 qui lui donne le modèle du chipset utilisé.

    A noter que beaucoup de convertisseur ont une EEPROM qui permet de modifier l’ID vendeur/produit/version, C’est notamment le cas de la plupart des FTDI, mais la programmation de cet ID est rarement simple, et sauf à vouloir commercialiser quelques chose, l’effort est rarement justifié.

    Pour ma part je vais à la pêche, j’achète deux ou trois interface à 3€, et je fais des échanges avec des pots pour éviter les problèmes de consanguinité. Il faut vraiment ne pas avoir de chance pour que deux interfaces qui ont plus d’un an d’écart est le même ID.

    Répondre à ce message

  • Suite à un changement dans la stratégie de gestion des droit d’accès à /dev et donc aux périphériques USB, les utilisateurs Ubuntu doivent taper la commande suivante « sudo usermod -a -G dialout $LOGNAME » pour autoriser OpenCPN à voir les périphériques USB au moment de la configuration des connections.

    A noter que les nouveaux droit ne sont pas pris en compte dans la session courante, il faut donc ce déconnecter/reconnecter pour valider le changement de droit.

    Répondre à ce message

  • 21 janvier 2015 15:50, par Garavan écrire     UP  image

    Bonjour,
    Je decouvre á l’instant votre post qui semble être celui qui devrait solutionner mes problemes. Cependant je dois preciser que je debute avec Linux version Xubuntu 14.04 (2 jours á peine) et je suis nul en informatique. J’ai malgre tout reussi á installer Open cpn et les cartes cm 93 mais quand je connecte mon gps un message d’erreur apparait (piece jointe). En suivant votre tuto j’ai note le numero ID du GPS qui est le même que celui de votre exemple, j’en deduis que nous utilisons la même antenne gps M C MARINE GP 01S. Lá oú cela se complique c’est l’etape 2 comment acceder á la liste des peripheriques connus ? etape 3 placer le fichier dans le repertoire......? Si vous pouviez me re-expliquer tout cela je vous serais reconnaissant. D’avance un grand merci et bravo pour votre post.:-))

    Répondre à ce message

    • 21 janvier 2015 17:42, par yvesD écrire     UP     Ce message répond à ... Animateur

      Je suis trop vieux pour tout ça, en étant resté à Unix pur sucre (au moins 4 qualités). Voici ce que j’en pense, aux anachronismes près :

      • la copie d’écran, Elle met clairement en évidence un problème de droit d’accès au « périphérique » serial ( /dev/dialout) qu’openCPN doit (au moins) pouvoir lire pour trouver des positions GPS. Votre linux suggère judicieusement d’executer la commande sudo usermode -a -G dialout jean

      Puisque vous débuter avec linux, voici ce que fait cette commande :

      1. étant utilisateur privilégié (faut l’être, donc connaitre le password de root, il vous sera sans doute demandé par sudo) exécuter la commande usermode -a -G dialout jean. sudo vérifiera que vous être privilégie et exécutera cette commande (cf man sudo)
      2. usermode est sans doute la commande qui ajoute des attributs à l’utilsateur jean (cf man usermode), ici d’ajouter jean au groupe dialout, sachant que la définition de /dev/dialout (faire ls -l /dev/dialout) autorise le groupe dialout a (au moins) lire ce périphérique.
      • à ce stade il faudra relancer openCPN

      note le numero ID du GPS

      Les périphériques USB sont dotés d’un ID (en fait un vendor id et un product IP, resp. VID et PID) permettant de les associerau driver ad-hoc ?. Dans le cas précis d’un GPS sur port USB le VID&PID est spécifique de la puce qui gère l’interface USB-série, généralement du prolific, elle n’a rien à voir avec la boite qui a mis une étiquette sur le plastique.

      J’imagine qu’on peut retrouver ce VID&PID lorsque le périph est reconnu, au boot (dans les messages du boot) ou lorsqu’on le raccorde.

      Répondre à ce message

  • 21 janvier 2015 18:39, par fulup écrire     UP

    Sur les nouvelles versions de Linux, en standard les périphériques RS232 ne sont pas accessible aux utilisateurs de base. Pour accéder au périphérique série il faut avoir access au groupe « dialout ». Pour ajouter ce groupe dans votre profile utilisateur, le plus simple est de taper dans un terminal la commande

    sudo usermod -a -G dialout $LOGNAME

    Une fois la commande en place, il faut fermer la session utilisateur et la ré-ouvrir [on peut aussi rebooter, mais c’est pas obligatoire]. Je pensais avoir mis à jour ce tutorial, car le mode de sécurité par défaut de Linux à changé, il y a déjà pas mal de temps.

    A noter que si on utilise GPSd cette manip n’est pas obligatoire.

    Répondre à ce message

  • Une vidéo tutorielle a été ajoutée en bas du dossier...

    Pour mémoire, ce lien : installation GPS/USB

    Répondre à ce message

  • 21 septembre 2016 14:05, par Inae83 écrire     UP  image

    Bonjour,
    Votre tutoriel vidéo sur la connection d’un GPS USB sous Linux est d’une redoutable précision. Bravo.
    Je l’ai utilisé sous Linux Mint 17.3 et ça marche sans problème. Le GPS est un NavRoute GM-R800, identifiant 1546:01a4.
    Je viens d’essayer sous Mint 18, et malgré de nombreux essais et vérifications, ça ne marche pas. Le GPS est un UT-41, identifiants 067b:2303. Ce qui se passe, c’est qu’après avoir débranché puis rebranché le GPS, le device /dev/gps-usb n’est pas créé (il n’existe pas). Y a-t-il un changement depuis la version 18 de Mint, ou est-ce la faute du GPS lui-même ?

    Répondre à ce message

    • Aucun changement dans Linux au niveau du udev. Les raisons possibles :
      - une erreur dans l’authentification, il faut vérifier, revérifier les IDs du devices
      - la ligne du device n’a pas été exécuté car une ligne précédente dans la conf udev bloque
      - udev n’a pas été redémarré (si la machine à été rebooté UDEV est forcement a jour)
      - le nouveau GPS n’est pas de la famille des TTYs

      Pour vérifier, le plus simple c’est de tapper ’sudo journalctl -f" dans un terminal et de regarder les messages quant on connecte le GPS.

      Répondre à ce message

  • 25 septembre 2016 10:21, par Jona écrire     UP  image

    Bonjour,

    tu peux aussi utiliser la commande « dmesg » pour observer ce qui se passe :

    - connecter le gps sur usb.
    - en mode commande en ligne : dmesg

    sur fedora :

    [ 7779.647528] usb 2-1.2 : new full-speed USB device number 5 using ehci-pci
    [ 7779.734683] usb 2-1.2 : New USB device found, idVendor=10c4, idProduct=ea60
    [ 7779.734691] usb 2-1.2 : New USB device strings : Mfr=1, Product=2, SerialNumber=3
    [ 7779.734697] usb 2-1.2 : Product : CP2102 USB to UART Bridge Controller
    [ 7779.734701] usb 2-1.2 : Manufacturer : Silicon Labs
    [ 7779.734705] usb 2-1.2 : SerialNumber : 0001
    [ 7779.737647] cp210x 2-1.2:1.0 : cp210x converter detected
    [ 7779.741451] usb 2-1.2 : cp210x converter now attached to ttyUSB0

    sinon, il faut « éplucher » les messages de « journalctl ».

    remarque : sur nos ordinateurs qui séjournent dans le boat, les connecteurs sont souvent oxydés, en particulier, les usb... Les conséquences sont parfois surprenantes sur le soft....

    Bon WE

    Gilles

    Répondre à ce message

  • 16 juillet 2021 17:06, par k_lot35 écrire     UP  image

    Bonjour à tou·te·s,
    tutoriel très intéressant. Merci Fulup !
    Tout a l’air de marcher nickel sauf à l’affichage de la fenêtre NMEA : je n’ai aucune donnée.
    Je précise que le périphérique utilisé est une clé Navilock NL-464US dont l’ancien propriétaire est incapable de certifier le bon fonctionnement...
    Dans les spécifications, je vois
    SiRFstarIII™ LPx GPS Single chipset
    • Accepts the signals of up to 20 satellites at the same time
    • Sensitivity : -159 dBm
    • Supports NMEA 0183 V3 GGA, GSA, GSV, RMC, VTG, GLL
    • USB specification 2.0
    Mais aussi :
    • Baud rate 38400
    Est-ce à dire que c’est le nombre à indiquer dans OpenCPN et que le problème sera résolu ?
    Je précise que je poste pour une connaissance et que je n’ai pas le matériel sur moi mais je peux y avoir accès...
    Autre question : on essaie sur Ubuntu 18.04 (de mémoire) alors que la doc suggère un Kernel 2.6. Est-ce-que cela peut poser problème ? Je précise que la clé est bien détectée.
    Merci pour vos réponses.
    À bientôt.

    Répondre à ce message

    • 16 juillet 2021 18:02, par yoruk écrire     UP     Ce message répond à ... Animateur

      Je ne suis pas un spécialiste Linux, néanmoins, vous trouverez des informations « officielles » à ce lien :

      Cordialement, Michel

      Répondre à ce message

    • 16 juillet 2021 19:19, par yvesD écrire     UP     Ce message répond à ... Animateur

      Comme le signale yoruk tout doit être dit dans la doc OpenCPN, surtout en 2021 ;-)

      Y vérifier de près l’adéquation d’un SIRF III à OpenCPN, de mémoire il y a eu dans le passé un SIRF qui ne convenait pas.

      Vos infos parlent d’un 20 canaux, ce qui est vraiement bien, et 38400 est une débit élevé et inhabituel mais parler de 4800 ou de 38400 alors qu’on est en USB ça ne fait pas trop de sens.
      C’est bien ce 38400 qu’il faudra renseigner à OpenCPN si un débit binaire est réclamé mais surtout il faudra qu’un bout de code (driver, émulateur de TTY) convertisse ce USB en pseudo port COM.Dans le monde windows que je pratique le fait de brancher une clé GPS USB fait automatiquement monter ce driver et le port TTY associé.

      Bon courage et ... RTFM (read the fucked manual)

      Répondre à ce message

Répondre à cet article

UP

Copyright et informations légales