Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#176 Le 29/04/2016, à 14:20

psig018

Re : GFrun - Running - Garmin Forerunner 60 - 405CX - 310XT - 610 - 910XT

bonjour à tous !

j'ai un petit soucis !

voilà ça fait déjà qq années que j'utilise gfrun sans soucis majeur ! j'ai même converti un de mes amis à linux grace à ce sympathique logiciel !

bon, voilà : avec ma garmin 310xt pas de soucis ça marche bien, je retrouve les fichiers .fit sans soucis pour les incorporer au site garmin connect en manuel.... mais là j'ai en ma possession une 910 xt ! donc j'utilise gfrun pour rentrer mes données.... tout se passe super bien ! ça communique et le transfert se fait nickel ! mais pour retrouver les .fit rien.... je retrouve bien dans un autre dossier gfrun des .log mais pas de .fit pour ma 910 ; dans l'onglet forunners il me semble qu'il ne s'est pas créer de fichier avec la 910..... je n'ai que le numéro de ma 310 il me semble.... je pensais qu'il enverrai tout dans ce fichier du coup et bien non.... rien..... par contre je vois bien des ajouts dans le dossier log puis extractor.... mais je ne sais pas quoi faire de ces fichiers se terminant par .log..... le site garmin ne les reconnais pas !

donc j'en appelle à la communauté pour m'aider à pouvoir continuer à utiliser ma 910 et ma 310 en parallèle

merci d'avance et bonne fin de semaine à tous !

Hors ligne

#177 Le 27/05/2016, à 20:00

onis

Re : GFrun - Running - Garmin Forerunner 60 - 405CX - 310XT - 610 - 910XT

Bonjour à tous.
Je viens d'acheter une 310XT mais je n'arrive pas à installer GFrun.

C'est comme si le site ne répondait plus : à l'étape de la connexion de ma montre il apparait ce message :

--2016-05-27 20:55:10--  https://github.com/xonel/GFrun/raw//GFrun/GFrun.sh
Résolution de github.com (github.com)… 192.30.252.122
Connexion à github.com (github.com)|192.30.252.122|:443… connecté.
requête HTTP transmise, en attente de la réponse… 404 Not Found
2016-05-27 20:55:10 erreur 404 : Not Found.

idem si je tente une mise à jour ou pour beaucoup de tentatives diverses que je fais.

Savez vous si ce logiciel marche toujours ?

Hors ligne

#178 Le 30/08/2016, à 20:04

robain31

Re : GFrun - Running - Garmin Forerunner 60 - 405CX - 310XT - 610 - 910XT

Bonsoir,

Suite à un upgrade de la 14.04 à la 16.04, je n'arrive plus à extraire les .FIT de ma montre alors que je n'avais aucun problème avec la 14.04.

Voici les messages d'erreur :

>>> F_extractor
=== /home/maelan/GFrun/logs/extractorLogs
<<< Dongle ANT+ is plugged : OK 
Driver available: [<class ant.base.driver.SerialDriver at 0x7f86ce065738>, <class ant.base.driver.USB2Driver at 0x7f86ce065808>, <class ant.base.driver.USB3Driver at 0x7f86ce065870>]
 - Using: ant.base.driver.SerialDriver
Traceback (most recent call last):
  File "/home/maelan/GFrun/tools/extractor/garmin.py", line 339, in main
    g = Garmin(options.upload)
  File "/home/maelan/GFrun/tools/extractor/garmin.py", line 136, in __init__
    Application.__init__(self)
  File "/home/maelan/GFrun/tools/extractor/ant/fs/manager.py", line 82, in __init__
    self._node = Node()
  File "/home/maelan/GFrun/tools/extractor/ant/easy/node.py", line 48, in __init__
    self.ant = Ant()
  File "/home/maelan/GFrun/tools/extractor/ant/base/ant.py", line 59, in __init__
    self._driver.open()
  File "/home/maelan/GFrun/tools/extractor/ant/base/driver.py", line 97, in open
    self._serial = serial.serial_for_url(self.get_url(), 115200)
  File "/usr/lib/python2.7/dist-packages/serial/__init__.py", line 85, in serial_for_url
    instance.open()
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 311, in open
    self._update_dtr_state()
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 605, in _update_dtr_state
    fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str)
IOError: [Errno 22] Invalid argument
Interrupted: [Errno 22] Invalid argument
Traceback (most recent call last):
  File "/home/maelan/GFrun/tools/extractor/garmin.py", line 358, in <module>
    sys.exit(main())
  File "/home/maelan/GFrun/tools/extractor/garmin.py", line 354, in main
    g.stop()
UnboundLocalError: local variable 'g' referenced before assignment
Vpath : /home/maelan/GFrun

Je suis preneur de toute piste car je suis complètement bloqué.

Merci d'avance.


Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par cqfd93 (Le 30/08/2016, à 20:27)

Hors ligne

#179 Le 06/09/2016, à 19:46

pierrebp

Re : GFrun - Running - Garmin Forerunner 60 - 405CX - 310XT - 610 - 910XT

Bonsoir robain31,

J'ai eu le même souci. Dans le log que tu joins tu peux voir qu'il utilise le driver ant.base.driver.SerialDriver.

Je m'en suis sorti en le forcant à utiliser le driver ant.base.driver.USB2Driver. Pour cela j'ai simplement modifié le fichier $HOME/GFRun/tools/extractor/ant/base/driver.py :

gedit $HOME/GFrun/tools/extractor/ant/base/driver.py

Tu peux par exemple commenter les lignes 56 à 135 qui concernent le driver Serial, comme ça il ne le cherche pas et ne l'utilise pas.
Pour commenter le python, ajoute simplement le caractère # en début de ligne : voila ce que ça donne dans le fichier en question :

# Ant
#
# Copyright (c) 2012, Gustav Tiger <gustav@tiger.name>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

import logging

_logger = logging.getLogger("garmin.ant.base.driver")

class DriverException(Exception):
    pass

class DriverNotFound(DriverException):
    pass

class DriverTimeoutException(DriverException):
    pass

class Driver:
    
    @classmethod
    def find(cls):
        pass
    
    def open(self):
        pass
    
    def close(self):
        pass

    def read(self):
        pass
    
    def write(self, data):
        pass

drivers = []

#try:
#    import array
#    import os
#    import os.path
#
#    import serial
#
#    class SerialDriver(Driver):
#
#        ID_VENDOR  = 0x0fcf
#        ID_PRODUCT = 0x1004
#
#        @classmethod
#        def find(cls):
#            return cls.get_url() != None
#        
#        @classmethod
#        def get_url(cls):
#            try:
#                path = '/sys/bus/usb-serial/devices'
#                for device in os.listdir(path):
#                    try:
#                        device_path = os.path.realpath(os.path.join(path, device))
#                        device_path = os.path.join(device_path, "../../")
#                        ven = int(open(os.path.join(device_path, 'idVendor')).read().strip(), 16)
#                        pro = int(open(os.path.join(device_path, 'idProduct')).read().strip(), 16)
#                        if ven == cls.ID_VENDOR or cls.ID_PRODUCT == pro:
#                            return os.path.join("/dev", device)
#                    except:
#                        continue
#                return None
#            except OSError:
#                return None
#        
#        def open(self):
#            
#            # TODO find correct port on our own, could be done with
#            #      serial.tools.list_ports, but that seems to have some
#            #      problems at the moment.
#            
#            try:
#                self._serial = serial.serial_for_url(self.get_url(), 115200)
#            except serial.SerialException as e:
#                raise DriverException(e)
#            
#            print "Serial information:"
#            print "name:            ", self._serial.name
#            print "port:            ", self._serial.port
#            print "baudrate:        ", self._serial.baudrate
#            print "bytesize:        ", self._serial.bytesize
#            print "parity:          ", self._serial.parity
#            print "stopbits:        ", self._serial.stopbits
#            print "timeout:         ", self._serial.timeout
#            print "writeTimeout:    ", self._serial.writeTimeout
#            print "xonxoff:         ", self._serial.xonxoff
#            print "rtscts:          ", self._serial.rtscts
#            print "dsrdtr:          ", self._serial.dsrdtr
#            print "interCharTimeout:", self._serial.interCharTimeout
#
#            self._serial.timeout = 0
#        
#        def read(self):
#            data = self._serial.read(4096)
#            #print "serial read", len(data), type(data), data
#            return array.array('B', data)
#
#        def write(self, data):
#            try:
#                #print "serial write", type(data), data
#                self._serial.write(data)
#            except serial.SerialTimeoutException as e:
#                raise DriverTimeoutException(e)
#
#        def close(self):
#            self._serial.close()
#
#    drivers.append(SerialDriver)
#    
#except ImportError:
#    pass


try:
    import usb.core
    import usb.util

    class USBDriver(Driver):

        def __init__(self):
            pass

        @classmethod
        def find(cls):
            return usb.core.find(idVendor=cls.ID_VENDOR, idProduct=cls.ID_PRODUCT) != None

        def open(self):
            # Find USB device
            _logger.debug("USB Find device, vendor %#04x, product %#04x", self.ID_VENDOR, self.ID_PRODUCT)
            dev = usb.core.find(idVendor=self.ID_VENDOR, idProduct=self.ID_PRODUCT)

            # was it found?
            if dev is None:
                raise ValueError('Device not found')

            _logger.debug("USB Config values:")
            for cfg in dev:
                _logger.debug(" Config %s", cfg.bConfigurationValue)
                for intf in cfg:
                    _logger.debug("  Interface %s, Alt %s", str(intf.bInterfaceNumber), str(intf.bAlternateSetting))
                    for ep in intf:
                        _logger.debug("   Endpoint %s", str(ep.bEndpointAddress))

            # unmount a kernel driver (TODO: should probably reattach later)
            if dev.is_kernel_driver_active(0):
                _logger.debug("A kernel driver active, detatching")
                dev.detach_kernel_driver(0)
            else:
                _logger.debug("No kernel driver active")

            # set the active configuration. With no arguments, the first
            # configuration will be the active one
            dev.set_configuration()
            dev.reset()
            #dev.set_configuration()

            # get an endpoint instance
            cfg = dev.get_active_configuration()
            interface_number = cfg[(0,0)].bInterfaceNumber
            alternate_setting = usb.control.get_interface(dev, interface_number)
            intf = usb.util.find_descriptor(
                cfg, bInterfaceNumber = interface_number,
                bAlternateSetting = alternate_setting
            )

            self._out = usb.util.find_descriptor(
                intf,
                # match the first OUT endpoint
                custom_match = \
                lambda e: \
                    usb.util.endpoint_direction(e.bEndpointAddress) == \
                    usb.util.ENDPOINT_OUT
            )

            _logger.debug("UBS Endpoint out: %s, %s", self._out, self._out.bEndpointAddress)

            self._in = usb.util.find_descriptor(
                intf,
                # match the first OUT endpoint
                custom_match = \
                lambda e: \
                    usb.util.endpoint_direction(e.bEndpointAddress) == \
                    usb.util.ENDPOINT_IN
            )

            _logger.debug("UBS Endpoint in: %s, %s", self._in, self._in.bEndpointAddress)

            assert self._out is not None and self._in is not None
        
        def close(self):
            pass
        
        def read(self):
            return self._in.read(4096)
        
        def write(self, data):
            self._out.write(data)

    class USB2Driver(USBDriver):
        ID_VENDOR  = 0x0fcf
        ID_PRODUCT = 0x1008

    class USB3Driver(USBDriver):
        ID_VENDOR  = 0x0fcf
        ID_PRODUCT = 0x1009

    drivers.append(USB2Driver)
    drivers.append(USB3Driver)

except ImportError:
    pass

def find_driver():
    
    print "Driver available:", drivers
    
    for driver in drivers:
        if driver.find():
            print " - Using:", driver
            return driver()
    raise DriverNotFound

Je précise que je ne garantis pas le succès de la modif chez toi mais bon ça ne coûte rien d'essayer smile
Edit : je précise que j'ai une 910xt

Dernière modification par pierrebp (Le 06/09/2016, à 19:50)

Hors ligne

#180 Le 03/10/2016, à 22:15

hector

Re : GFrun - Running - Garmin Forerunner 60 - 405CX - 310XT - 610 - 910XT

Bonsoir,
Je fais un retour rapide : je suis sur ubuntu 16.04 (64 bits), et j'ai une toute nouvelle garmin swim.
D'abord je signale que j'ai eu la même erreur que robain31 (#178) (à base de Using: ant.base.driver.SerialDriver), et que la réponse de pierrebp (#179) a marché au poil pour moi (merci à lui!).
Malheureusement, j'ai ensuite rencontré la même erreur que MKII (#111), Amélie-34 (#174) et kerlo (#157):

AntFSDownloadException: ('Download request failed: ', 2)

Je crois que notre point commun à tous les 4, c'est la garmin swim... hmm Y a t'il un un possesseur de celle-ci comblé ?
Notons qu'il arrive avant de faire son erreur à lire le nombre de fichiers dispo sur la montre :

Downloading 7 file(s) and uploading 0 file(s)

Si quelqu'un a une idée...


L'erreur en texte intégral:

<<< Dongle ANT+ is plugged : OK 
Driver available: [<class ant.base.driver.USB2Driver at 0x7f397e9b7ce8>, <class ant.base.driver.USB3Driver at 0x7f397e9b7d50>]
 - Using: ant.base.driver.USB3Driver
Request basic information...
  Capabilities:  array('B', [8, 8, 0, 186, 54, 0, 223, 4])
Starting system...
Key done...
Searching...
Authenticating with GARMIN SWIM (3918941296)
 - Passkey: OK
Downloading 7 file(s) and uploading 0 file(s)
Downloading 1989-12-31_01-00-00_1_0.fit [Traceback (most recent call last):
  File "/home/hector/GFrun/tools/extractor/garmin.py", line 340, in main
    g.start()
  File "/home/hector/GFrun/tools/extractor/ant/fs/manager.py", line 202, in start
    self._main()
  File "/home/hector/GFrun/tools/extractor/ant/fs/manager.py", line 134, in _main
    self.on_transport(beacon)
  File "/home/hector/GFrun/tools/extractor/garmin.py", line 235, in on_transport
    self.download_file(fileobject)
  File "/home/hector/GFrun/tools/extractor/garmin.py", line 293, in download_file
    data = self.download(fil.get_index(), self._get_progress_callback())
  File "/home/hector/GFrun/tools/extractor/ant/fs/manager.py", line 316, in download
    response._get_argument("response"))
AntFSDownloadException: ('Download request failed: ', 2)
Interrupted: ('Download request failed: ', 2)
Vpath : /home/hector/GFrun
Press [Enter] key to continue

note : ce lien semble intéressant... quel est le rapport entre tigge et gfrun d'ailleurs ?

Dernière modification par hector (Le 03/10/2016, à 22:39)

Hors ligne

#181 Le 09/02/2017, à 00:34

Herve_HKey

Re : GFrun - Running - Garmin Forerunner 60 - 405CX - 310XT - 610 - 910XT

psig018 a écrit :

je retrouve bien dans un autre dossier gfrun des .log mais pas de .fit pour ma 910 [...]


Désolé de répondre si tard, mais je viens seulement de me pencher sur le problème (après y avoir été confronté aujourd'hui, après une mise à jour Ubuntu 14.04 -> 16.04, qui a d'ailleurs nécessité le patch proposé par pierrebp dans le message 179). Dans mon cas, la montre GPS n'a pas changé (je suis toujours sur la 310XT), c'est l'OS qui a changé, mais avec la même conséquence que pour toi : les fichiers .fit semblaient introuvables, le transfert de données ne les faisait pas apparaître dans le répertoire habituel (dans un sous-répertoire de GFrun).
J'ai fini par mettre la main dessus : ils sont maintenant dans $HOME/.config/garmin-extractor/3878667742/activities/ (où « 3878667742 » est l'identifiant de ma montre GPS : à adapter dans ton cas). Jette un coup d'œil dans ce répertoire de ton côté ...

Hors ligne