Code Monkey home page Code Monkey logo

antfs-cli's Introduction

ANT-FS Command Line Interface

Build Status Coveralls branch Code style: black

This program (antfs-cli) extracts all activity FIT files from a device and writes them to a folder (see file locations below). The first time it runs it attempts to sync with the watch. This produces an authfile which is written to the same folder. On startup this program will try to read that file to avoid having to re-sync.

Requirements

Installation

Run sudo python setup.py install to install ANT-FS Command Line Interface. This will install an antfs-cli binary in /usr/bin or similar.

Usage

Usage: antfs-cli [options]

Options:
  -h, --help  show this help message and exit
  --upload    enable uploading
  --debug     enable debug

Upload to Garmin Connect

This program can upload automatically the activities from your watch to Garmin Connect by using garmin-uploader.

To setup the activity upload, follow these steps:

  1. Install upload extra dependecies
    sudo pip install antfs-cli[upload]
    
  2. Setup your Garmin Connect credentials in ~/.guploadrc
    [Credentials]
    username=yourgarminuser
    password=yourgarminpass
    
  3. Copy the file scripts/40-upload_to_garmin_connect.py into the directory ~/.config/antfs-cli/scripts Make sure it is still executable.

Now after every successful activity download from your watch, the activity will be uploaded to Garmin Connect.

Upload to Strava

This program can upload automatically the activities from your watch to Strava by using stravalib and drpexe-uploader.

To setup the activity upload, follow these steps:

  1. Install upload extra dependecies
    sudo pip install stravalib
    
  2. Run the script scripts/40-upload_to_strava.py to fetch your Strava credentials. Follow the instructions to authorize drpexe-uploader to upload files on your behalf.
    ./scripts/40-upload_to_strava.py
    
  3. Copy the file scripts/40-upload_to_strava.py into the directory ~/.config/antfs-cli/scripts Make sure it is still executable.

File locations

Simple answer (probably correct for most people)

Your files are placed in ~/.config/antfs-cli/

Long answer

FIT files and authfiles are stored in an the location specified by the XDG Base Directory specification. It uses the $XDG_CONFIG_HOME with $HOME/.config as backup. In this directory a antfs-cli folder is created in which a folder for each device is created. Both the .FIT files and authfile are stored in this device-specific folder. All logs are stored in a logs subfolder of the antfs-cli directory.

Supported devices

Any device supported by openant should work.

ANT USB Sticks

ANT-FS Devices

Any compliant ANT-FS device should in theory work, but those specific devices have been reported as working:

  • Garmin Forerunner 60
  • Garmin Forerunner 405CX
  • Garmin Forerunner 310XT
  • Garmin Forerunner 610
  • Garmin Forerunner 910XT
  • Garmin FR70
  • Garmin Swim

Please let me know if you have any success with devices that are not listed here.

antfs-cli's People

Contributors

amitramon avatar balu- avatar caius avatar christofferholmstedt avatar codingtony avatar danielfn avatar echelon9 avatar la0 avatar lamby avatar mart-e avatar mgr01 avatar mscansian avatar pwithnall avatar tfheen avatar tigge avatar toilal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

antfs-cli's Issues

scripting: OSError: [Errno 13] Permission denied

maybe a simple "user" error? have not yet figured why I might get the permission denied error ?

these are from two different runs of garmin.py:

Downloading 2012-07-17_13-05-38-80-25467.fitException in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in **bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(_self.__args, _self.__kwargs)
File "/home/aloeff/Programming/misc-code/Garmin-Forerunner-610-Extractor/scripting.py", line 42, in _run_action
action, filename])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(_popenargs, _kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init

errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied

  • done

----snip

Done!
Traceback (most recent call last):
File "/home/aloeff/.config/garmin-extractor/scripts/40-convert_to_tcx.py", line 52, in
stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied

Success with FR70 (as root). Possible udev rules issue?

Success with Garmin FR70 (as root).

I have a Garmin FR70 with a USB2 ANT stick
$ lsusb | grep -i dyna*
Bus 003 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc.

I have a rule in the rules.d folder that says:
KERNEL=="3-1", ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1008", SYMLINK+="ttyUSB0", MODE="0660", ACTION=="add"

This resulted in successful pairing with the watch using garmin-ant-downloader, but it gets me a file ".gant" that I don't know what to do with and I could not get FIT files. After installing Garmin-Forerunner-610-Extractor:

If I do not run as root:
daniel@daniel-1000H ~/garmin/Garmin-Forerunner-610-Extractor $ python garmin.py
Traceback (most recent call last):
File "garmin.py", line 205, in main
g = Garmin()
File "garmin.py", line 56, in init
Application.init(self)
File "/home/daniel/garmin/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 64, in init
self._node = Node(0x0fcf, 0x1008)
File "/home/daniel/garmin/Garmin-Forerunner-610-Extractor/ant/easy/node.py", line 48, in init
self.ant = Ant(idVendor, idProduct)
File "/home/daniel/garmin/Garmin-Forerunner-610-Extractor/ant/base/ant.py", line 52, in init
for cfg in dev:
File "/usr/local/lib/python2.7/dist-packages/pyusb-1.0.0a3-py2.7.egg/usb/core.py", line 733, in iter
yield Configuration(self, i)
File "/usr/local/lib/python2.7/dist-packages/pyusb-1.0.0a3-py2.7.egg/usb/core.py", line 419, in init
configuration
File "/usr/local/lib/python2.7/dist-packages/pyusb-1.0.0a3-py2.7.egg/usb/backend/libusb1.py", line 471, in get_configuration_descriptor
config, byref(cfg)))
File "/usr/local/lib/python2.7/dist-packages/pyusb-1.0.0a3-py2.7.egg/usb/backend/libusb1.py", line 403, in _check
raise USBError(_str_error[ret], ret, _libusb_errno[ret])
USBError: [Errno 5] Input/output error
Interrupted
Traceback (most recent call last):
File "garmin.py", line 214, in
sys.exit(main())
File "garmin.py", line 210, in main
g.stop()
UnboundLocalError: local variable 'g' referenced before assignment

If I run as root:
daniel@daniel-1000H ~/garmin/Garmin-Forerunner-610-Extractor $ sudo python garmin.py
Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 2956597
Starting system...
Searching...
Authenticating with FR70 (1259281)

  • Pairing: OK
    Downloading 8 file(s)
    Downloading 1990-01-01_02-36-43-80-280.fit [..........]
    Downloading 1990-01-01_02-15-40-80-499.fit [..........]
    Downloading 1990-01-02_03-52-10-80-499.fit [..........]
    Downloading 1989-12-30_20-37-29-80-499.fit [..........]
    Downloading 1989-12-30_18-43-35-80-168.fit [..........]
    Downloading 1990-01-01_03-14-16-80-138.fit [..........]
    Downloading 1989-12-30_20-03-32-80-3439.fit [..........]
    Downloading 1990-01-01_03-14-16-80-3576.fit [..........]

"UnboundLocalError" after upgrade

Hi Gustav

I have just upgraded from 7fbfab0 (which worked fine) and now I get what follows (running debian stable, with python 2.6 and a 910xt). Cheers

Mike

Traceback (most recent call last):
File "/home/mike/bin/garmin.py", line 205, in main
g = Garmin()
File "/home/mike/bin/garmin.py", line 56, in init
Application.init(self)
File "/home/mike/bin/ant/fs/manager.py", line 64, in init
self._node = Node(0x0fcf, 0x1008)
File "/home/mike/bin/ant/easy/node.py", line 48, in init
self.ant = Ant(idVendor, idProduct)
File "/home/mike/bin/ant/base/ant.py", line 60, in init
if dev.is_kernel_driver_active(0):
File "/usr/local/lib/python2.6/dist-packages/usb/core.py", line 712, in is_kernel_driver_active
self._ctx.get_interface(self, interface).bInterfaceNumber)
File "/usr/local/lib/python2.6/dist-packages/usb/backend/init.py", line 355, in is_kernel_driver_active
_not_implemented(self.is_kernel_driver_active)
File "/usr/local/lib/python2.6/dist-packages/usb/backend/init.py", line 79, in _not_implemented
raise NotImplementedError(func.name)
NotImplementedError: is_kernel_driver_active
Interrupted
Traceback (most recent call last):
File "/home/mike/bin/garmin.py", line 214, in
sys.exit(main())
File "/home/mike/bin/garmin.py", line 210, in main
g.stop()
UnboundLocalError: local variable 'g' referenced before assignment

Send course to watch functionality

I know, it's not the intention of the application, but I wanted to put this concept out there.

Send course to watch:

  • Using something like bikeroutetoaster, create a course.
  • Save it to the computer as a *.tcx.
  • Send it to the watch via the ant stick.

I find it useful to use when jogging in a foreign/unfamiliar place.

Perhaps we can assess interest via comments to this 'issue'?
Is it possible?
It is feasible?

Terminate garmin.py with key command

When running garmin.py it would be nice to be able to terminate the script e.g. when it seems like it's stuck in "Searching...".

Suggestion, let "ctrl+c" or "q" terminate script.

Garmin Swim

Hi.

I can confirm that Garmin Swim watch are supported, too. I've just followed installing instructions and it was paired an activities were downloaded successfully.

./garmin.py
Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 3225241
Starting system...
Searching...
Authenticating with GARMIN SWIM (3857439471)

  • Pairing: OK
    Downloading 10 file(s)
    Downloading 1989-12-31_04-12-48-80-320.fit [..........]
    Downloading 1989-12-31_01-00-00-80-158.fit [..........]
    Downloading 1989-12-31_01-00-00-80-1013.fit [..........]
    Downloading 2013-01-16_20-51-21-80-3245.fit [..........]
    Downloading 2013-01-16_20-51-20-80-727.fit [..........]
    Downloading 2013-01-18_22-13-44-80-217.fit [..........]
    Downloading 2013-01-18_22-13-44-80-239.fit [..........]
    Downloading 2013-01-19_19-41-31-80-114.fit [..........]
    Downloading 2013-01-19_19-41-32-80-669.fit [..........]
    Downloading 2013-01-19_19-41-32-80-2883.fit [..........]

My configuration:
USB2 ANT Stick:
lsusb | grep Dyna
Bus 001 Device 009: ID 0fcf:1008 Dynastream Innovations, Inc.
Linux distro:
cat /etc/linuxmint/info
RELEASE=13
CODENAME=maya
EDITION="MATE 64-bit"
DESCRIPTION="Linux Mint 13 Maya"
DESKTOP=MATE
TOOLKIT=GTK
NEW_FEATURES_URL=http://www.linuxmint.com/rel_maya_whatsnew.php
RELEASE_NOTES_URL=http://www.linuxmint.com/rel_maya.php
USER_GUIDE_URL=http://www.linuxmint.com/documentation.php
GRUB_TITLE=Linux Mint 13 MATE 64-bit

Thank you very much for a great tool :)

Discussion (long term goal), any interest in moving this to OpenYou organization?

OpenYou (http://www.openyou.org/about/)

OpenYou.org seeks to be a central resource for news about open 
source development on health hardware. It provides lists of libraries 
and applications from the open source community, to help developers 
learn more about the devices that let them learn about themselves.

In addition to pointing to other libraries and projects, the OpenYou 
team also actively reverse engineers and develops drivers and 
libraries for whatever health hardware they can find.

OpenYou have now all their projects in an "organization" here on Github (https://github.com/openyou). This is mainly a question to @Tigge but anyone should comment on this. Would it be interesting to move a project like this extractor to an organization like OpenYou?

The extractor would of course need to be further developed and perhaps packaged more like a library than a complete "terminal application". I've no strong opinion about this but it's always fun to be a part of something bigger =)

change authfile location

as already see with you :
root@benbook:/home/lotsob/Garmin-Forerunner-610-Extractor# python garmin.py
configval
1
0,0
129
1
<usb.core.Endpoint object at 0xa057fac> 1
<usb.core.Endpoint object at 0xa057fcc> 129
in
Request basic information...
Starting system...
Open channel...
Searching...
new state
[0, 67, 12, 0, 3, 65, 5, 1, 0]
found device
pair False data False
send acknowledged 0
^Cwas killed

I had to do a control C
I put my watch on initial pairing on to try and get the auth file, maybe a folder issue ?
so I changed ~/gant/authfile to ./authfile

Segfault - python, "segfault at 40", libusb-1.0.so.0.1.0

I've just forked and downloaded the code so haven't looked at the actual code to figure this one out but posting this as an issue. You might have seen this one before and know how to fix it. My belief is that this one might be out of the scope of the Extractor and is more of a libusb bug but I'm not sure.

Fresh install of Ubuntu 12.04 LTS amd64 earlier today. Followed by the installation guide in the README file. Garmin 610.

dmesg

[ 1258.867942] usb 2-1.6: reset full-speed USB device number 4 using ehci_hcd
[ 1258.961394] python[2776]: segfault at 40 ip 00007f98fe270f12 sp 00007fffd26b8a70 error 4 in libusb-1.0.so.0.1.0[7f98fe267000+e000]

Syslog

May  4 11:27:11 thanatos kernel: [ 1258.867942] usb 2-1.6: reset full-speed USB device number 4 using ehci_hcd
May  4 11:27:11 thanatos kernel: [ 1258.961394] python[2776]: segfault at 40 ip 00007f98fe270f12 sp 00007fffd26b8a70 error 4 in libusb-1.0.so.0.1.0[7f98fe267000+e000]

garmin.log

2012-05-04 11:27:10,941  garmin.ant.base  DEBUG     USB Find device, vendor 0xfcf, product 0x1008
2012-05-04 11:27:10,957  garmin.ant.base  DEBUG     USB Config values:
2012-05-04 11:27:10,957  garmin.ant.base  DEBUG      Config 1
2012-05-04 11:27:10,958  garmin.ant.base  DEBUG       Interface 0, Alt 0
2012-05-04 11:27:10,958  garmin.ant.base  DEBUG        Endpoint 129
2012-05-04 11:27:10,958  garmin.ant.base  DEBUG        Endpoint 1

Any idea on how to recover a resetted/deleted activity?

Hi,

I've got a Garmin 310TX and now I've managed to connect it and extract data with the Extractor on my mac osx 10.7 (thanx Tigge!)

Now for the real reason I've tried to connect to it with a script:

a little drama took place on the Hippodorome of Istanbul 10 days ago: I had just finished my record marathon and, after having pressed "Stop", as I always do to avoid mishaps, I've pressed "reset" (by holding Lap 4 3 secs)..

But.. but there's no track of my run on the device. My suspect is that, being quite tired, I thought I had pressed the "Stop" button but in fact i didn't and so, when I resetted the watch, i actually deleted the track.

But I suspect the track is still there (i haven't used the Garmin since), in a deleted file somewhere.

Any idea on how to

  • copy the entire file system, block by block (so I can afterwards investigate, and I can start using the Garmin again)
  • recover deleted files?

Thanks!

"No Module named Core" (AntFSAuthenticationException

Hi,

I'm getting an error equal to the one posted here: http://codepad.org/9wyGgmK0
Traceback (most recent call last):
File "garmin.py", line 28, in
from ant.fs.manager import Application, AntFSAuthenticationException
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/fs/manager.py", line 31, in
from ant.easy.node import Node, Message
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/easy/node.py", line 28, in
from ant.base.ant import Ant
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/base/ant.py", line 31, in
import usb.core
ImportError: No module named core

I'm not sure if I did anything wrong, but do wonder if there's a way to fix this.

No error handling on authentication

The current implementation always assumes that pairing and authentication is successful. This fails in the following two cases:

  1. Pairing is disabled on the device. The auth file is still written, even though the pairing fails. All subsequent connections fail because of the invalid auth file (stuck forever at "Downloading index...").
  2. The device is paired on a different machine (auth file changed). All subsequent connections fail because of the invalid auth file (stuck forever just after receiving the device serial number & name).

For both these cases no error message is shown, which makes it very confusing. To solve the issue, do the following:

  1. Delete the .config/garmin-extractor folder (or just the auth file).
  2. Enable pairing on the device, BEFORE running the script.
  3. Run the script - it should automatically pair now.

I've downloaded the official ANT-FS documentation, so I'll help with the missing implementation / bugfixes like this when I can. My time is limited though, so it might be a while before I get anything done. I also want to investigate whether it's worth it to write a proper ANT-FS implementation (perhaps based on python-ant), or just continue hacking on this project.

As far as I understand copyright and the ANT Adopter agreement, it is illegal to copy the official documentation and reference implementations. However, the protocol itself cannot be protected under copyright. This means that it's safe to use the official documentation to write an open-source implementation, as long as no parts of the documentation or reference implementation is directly copied.

Add timestamp to filename for log file

I'm going to put some time in to this project the upcoming two weeks and needed something "easy" to start with. While testing out the current master branch today I was a bit annoyed that the garmin.log file always got overwritten.

I'm going to add timestamp to the filename of the log files. Do not know how to do it yet but I suppose it should be pretty easy.

Current filename
garmin.log
Suggested filename:
YYYYMMDD-HHMMSS-garmin.log
20120813-183545-garmin.log

Any opinions about this?

indexing issue at the end of script

ant fs file is done
got 125 want 125
list index out of range <type 'exceptions.IndexError'>
File "garmin.py", line 337, in
sys.exit(main())
File "garmin.py", line 332, in main
g.gogo()
File "garmin.py", line 308, in gogo
traceback.print_stack()
Traceback (most recent call last):
File "garmin.py", line 303, in gogo
self.gofix()
File "/home/lotsob/Garmin-Forerunner-610-Extractor/ant/easy.py", line 198, in gofix
self.on_burst_data(message._data)
File "garmin.py", line 252, in on_burst_data
self.got_ant_fs(data)
File "garmin.py", line 199, in got_ant_fs
self.ant_fs_next(self.fetch[0])
IndexError: list index out of range
was killed

I got the .fit files now :) that rocks

Extracting from forerunner 910XT

Hello,

I'm trying to extract files from my 910XT with Garmin-Forerunner-610-Extractor. Could you please tell me what the problem is. Thank you

I obtain the following :
didier@didier-desktop:~/garmin$ python garmin.py
Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 1897157
Starting system...
Searching...
'module' object has no attribute 'OrderedDict'

and the log gives :
MainThread 2012-12-23 22:57:32,599 garmin.ant.base.ant DEBUG USB Find device, vendor 0xfcf, product 0x1008 (ant.py:44)
MainThread 2012-12-23 22:57:32,619 garmin.ant.base.ant DEBUG USB Config values: (ant.py:51)
MainThread 2012-12-23 22:57:32,620 garmin.ant.base.ant DEBUG Config 1 (ant.py:53)
MainThread 2012-12-23 22:57:32,620 garmin.ant.base.ant DEBUG Interface 0, Alt 0 (ant.py:55)
MainThread 2012-12-23 22:57:32,621 garmin.ant.base.ant DEBUG Endpoint 129 (ant.py:57)
MainThread 2012-12-23 22:57:32,621 garmin.ant.base.ant DEBUG Endpoint 1 (ant.py:57)
MainThread 2012-12-23 22:57:32,622 garmin.ant.base.ant DEBUG No kernel driver active (ant.py:65)
MainThread 2012-12-23 22:57:33,014 garmin.ant.base.ant DEBUG UBS Endpoint out: <usb.core.Endpoint object at 0x9afffac>, 1 (ant.py:93)
MainThread 2012-12-23 22:57:33,015 garmin.ant.base.ant DEBUG UBS Endpoint in: <usb.core.Endpoint object at 0x9afffcc>, 129 (ant.py:104)
ant.base 2012-12-23 22:57:33,015 garmin.ant.base.ant DEBUG Ant runner started (ant.py:159)
MainThread 2012-12-23 22:57:33,016 garmin.ant.easy.node DEBUG requesting message 0x3e (node.py:62)
ant.base 2012-12-23 22:57:33,020 garmin.ant.base.ant DEBUG Read data: [a4 0b 3e 41 4a 4b 31 2e 30 34 52 41 46 00 9f](now have [a4 0b 3e 41 4a 4b 31 2e 30 34 52 41 46 00 9f] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,020 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 3e d5
MainThread 2012-12-23 22:57:33,021 garmin.ant.easy.node DEBUG done requesting message 0x3e (node.py:64)
MainThread 2012-12-23 22:57:33,022 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd2cc> (filter.py:37)
MainThread 2012-12-23 22:57:33,023 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,023 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd2cc> (filter.py:55)
MainThread 2012-12-23 22:57:33,024 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 62, array('B', [65, 74, 75, 49, 46, 48, 52, 82, 65, 70, 0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,025 garmin.ant.easy.filter DEBUG - response found (None, 62, array('B', [65, 74, 75, 49, 46, 48, 52, 82, 65, 70, 0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,025 garmin.ant.easy.node DEBUG requesting message 0x54 (node.py:62)
MainThread 2012-12-23 22:57:33,026 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 54 bf
MainThread 2012-12-23 22:57:33,027 garmin.ant.easy.node DEBUG done requesting message 0x54 (node.py:64)
ant.base 2012-12-23 22:57:33,026 garmin.ant.base.ant DEBUG Read data: [a4 06 54 08 03 00 ba 36 00 71](now have [a4 06 54 08 03 00 ba 36 00 71] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,027 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd294> (filter.py:37)
MainThread 2012-12-23 22:57:33,028 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,029 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd294> (filter.py:55)
MainThread 2012-12-23 22:57:33,032 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 84, array('B', [8, 3, 0, 186, 54, 0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,032 garmin.ant.easy.filter DEBUG - response found (None, 84, array('B', [8, 3, 0, 186, 54, 0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,033 garmin.ant.easy.node DEBUG requesting message 0x61 (node.py:62)
MainThread 2012-12-23 22:57:33,034 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 61 8a
ant.base 2012-12-23 22:57:33,034 garmin.ant.base.ant DEBUG Read data: [a4 04 61 c5 f2 1c 00 ea](now have [a4 04 61 c5 f2 1c 00 ea] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,035 garmin.ant.easy.node DEBUG done requesting message 0x61 (node.py:64)
MainThread 2012-12-23 22:57:33,036 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd294> (filter.py:37)
MainThread 2012-12-23 22:57:33,036 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,037 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd294> (filter.py:55)
MainThread 2012-12-23 22:57:33,040 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 97, array('B', [197, 242, 28, 0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,040 garmin.ant.easy.filter DEBUG - response found (None, 97, array('B', [197, 242, 28, 0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,042 garmin.ant.base.ant DEBUG Write data: a4 01 4a 00 ef
ant.base 2012-12-23 22:57:33,042 garmin.ant.base.ant DEBUG Read data: [a4 01 6f 00 ca](now have [a4 01 6f 00 ca] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,043 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd304> (filter.py:37)
MainThread 2012-12-23 22:57:33,043 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,044 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd304> (filter.py:55)
MainThread 2012-12-23 22:57:33,046 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 111, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,046 garmin.ant.easy.filter DEBUG - response found (None, 111, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,047 garmin.ant.base.ant DEBUG Write data: a4 09 46 00 a8 a4 23 b9 f5 5e 63 c1 74
MainThread 2012-12-23 22:57:33,048 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd294> (filter.py:37)
MainThread 2012-12-23 22:57:33,048 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,048 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd294> (filter.py:55)
ant.base 2012-12-23 22:57:33,049 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 46 00 a1](now have [a4 03 40 00 46 00 a1] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,056 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 70, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,057 garmin.ant.easy.filter DEBUG - response found (0, 70, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,058 garmin.ant.base.ant DEBUG Write data: a4 03 42 00 00 00 e5
ant.base 2012-12-23 22:57:33,058 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 42 00 a5](now have [a4 03 40 00 42 00 a5] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,059 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd304> (filter.py:37)
MainThread 2012-12-23 22:57:33,059 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,061 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd304> (filter.py:55)
MainThread 2012-12-23 22:57:33,062 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 66, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,062 garmin.ant.easy.filter DEBUG - response found (0, 66, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,064 garmin.ant.base.ant DEBUG Write data: a4 03 43 00 00 10 f4
ant.base 2012-12-23 22:57:33,064 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 43 00 a4](now have [a4 03 40 00 43 00 a4] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,065 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd294> (filter.py:37)
MainThread 2012-12-23 22:57:33,066 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,067 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd294> (filter.py:55)
MainThread 2012-12-23 22:57:33,070 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 67, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,070 garmin.ant.easy.filter DEBUG - response found (0, 67, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,072 garmin.ant.base.ant DEBUG Write data: a4 02 44 00 ff 1d
ant.base 2012-12-23 22:57:33,072 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 44 00 a3](now have [a4 03 40 00 44 00 a3] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,073 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd304> (filter.py:37)
MainThread 2012-12-23 22:57:33,073 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,074 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd304> (filter.py:55)
MainThread 2012-12-23 22:57:33,078 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 68, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,078 garmin.ant.easy.filter DEBUG - response found (0, 68, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,079 garmin.ant.base.ant DEBUG Write data: a4 02 45 00 32 d1
MainThread 2012-12-23 22:57:33,079 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd294> (filter.py:37)
MainThread 2012-12-23 22:57:33,080 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,080 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd294> (filter.py:55)
ant.base 2012-12-23 22:57:33,080 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 45 00 a2](now have [a4 03 40 00 45 00 a2] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,084 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 69, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,084 garmin.ant.easy.filter DEBUG - response found (0, 69, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,086 garmin.ant.base.ant DEBUG Write data: a4 03 49 00 53 00 bd
ant.base 2012-12-23 22:57:33,086 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 49 00 ae](now have [a4 03 40 00 49 00 ae] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,087 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd304> (filter.py:37)
MainThread 2012-12-23 22:57:33,087 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,088 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd304> (filter.py:55)
MainThread 2012-12-23 22:57:33,092 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 73, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,092 garmin.ant.easy.filter DEBUG - response found (0, 73, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,094 garmin.ant.base.ant DEBUG Write data: a4 05 51 00 00 00 01 00 f1
ant.base 2012-12-23 22:57:33,094 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 51 00 b6](now have [a4 03 40 00 51 00 b6] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,095 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd304> (filter.py:37)
MainThread 2012-12-23 22:57:33,096 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,097 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd304> (filter.py:55)
MainThread 2012-12-23 22:57:33,098 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 81, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,099 garmin.ant.easy.filter DEBUG - response found (0, 81, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,100 garmin.ant.base.ant DEBUG Write data: a4 01 4b 00 ee
ant.base 2012-12-23 22:57:33,100 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 4b 00 ac](now have [a4 03 40 00 4b 00 ac] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:33,101 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd294> (filter.py:37)
MainThread 2012-12-23 22:57:33,101 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:33,102 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd294> (filter.py:55)
MainThread 2012-12-23 22:57:33,104 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 75, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-23 22:57:33,104 garmin.ant.easy.filter DEBUG - response found (0, 75, array('B', [0])) (filter.py:44)
MainThread 2012-12-23 22:57:33,105 garmin DEBUG Creating directories (garmin.py:58)
MainThread 2012-12-23 22:57:33,105 garmin.ant.fs.manager DEBUG Link level (manager.py:95)
ant.base 2012-12-23 22:57:34,103 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-23 22:57:35,105 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-23 22:57:36,107 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-23 22:57:37,109 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-23 22:57:38,111 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-23 22:57:38,178 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 2c 00 03 30 05 01 00 bb](now have [a4 09 4e 00 43 2c 00 03 30 05 01 00 bb] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:38,219 garmin DEBUG on link, 66864, (1328, 1) (garmin.py:100)
MainThread 2012-12-23 22:57:38,220 garmin.ant.easy.channel DEBUG requesting message 0x51 (channel.py:91)
MainThread 2012-12-23 22:57:38,222 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 51 ba
MainThread 2012-12-23 22:57:38,222 garmin.ant.easy.channel DEBUG done requesting message 0x51 (channel.py:93)
MainThread 2012-12-23 22:57:38,222 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x9afd304> (filter.py:37)
MainThread 2012-12-23 22:57:38,222 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-23 22:57:38,223 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x9afd304> (filter.py:55)
ant.base 2012-12-23 22:57:38,278 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-23 22:57:38,279 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-23 22:57:38,282 garmin.ant.base.ant DEBUG Read data: [a4 05 51 00 17 9d 01 05 7e](now have [a4 05 51 00 17 9d 01 05 7e] in buffer) (ant.py:271)
ant.base 2012-12-23 22:57:38,302 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 2c 00 03 30 05 01 00 bb](now have [a4 09 4e 00 43 2c 00 03 30 05 01 00 bb] in buffer) (ant.py:271)
MainThread 2012-12-23 22:57:38,337 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 81, array('B', [23, 157, 1, 5]))]) (filter.py:40)
MainThread 2012-12-23 22:57:38,337 garmin.ant.easy.filter DEBUG - response found (0, 81, array('B', [23, 157, 1, 5])) (filter.py:44)
MainThread 2012-12-23 22:57:38,338 garmin.ant.fs.manager ERROR 'Traceback (most recent call last):' (manager.py:111)
MainThread 2012-12-23 22:57:38,339 garmin.ant.fs.manager ERROR ' File "/home/didier/garmin/ant/fs/manager.py", line 97, in _main' (manager.py:111)
MainThread 2012-12-23 22:57:38,339 garmin.ant.fs.manager ERROR ' if self.on_link(beacon):' (manager.py:111)
MainThread 2012-12-23 22:57:38,339 garmin.ant.fs.manager ERROR ' File "garmin.py", line 101, in on_link' (manager.py:111)
MainThread 2012-12-23 22:57:38,339 garmin.ant.fs.manager ERROR ' self.link()' (manager.py:111)
MainThread 2012-12-23 22:57:38,340 garmin.ant.fs.manager ERROR ' File "/home/didier/garmin/ant/fs/manager.py", line 218, in link' (manager.py:111)
MainThread 2012-12-23 22:57:38,340 garmin.ant.fs.manager ERROR ' self._send_command(LinkCommand(self._frequency, 4, self._serial_number))' (manager.py:111)
MainThread 2012-12-23 22:57:38,340 garmin.ant.fs.manager ERROR ' File "/home/didier/garmin/ant/fs/command.py", line 96, in init' (manager.py:111)
MainThread 2012-12-23 22:57:38,340 garmin.ant.fs.manager ERROR ' Command.init(self)' (manager.py:111)
MainThread 2012-12-23 22:57:38,341 garmin.ant.fs.manager ERROR ' File "/home/didier/garmin/ant/fs/command.py", line 57, in init' (manager.py:111)
MainThread 2012-12-23 22:57:38,341 garmin.ant.fs.manager ERROR ' self._arguments = collections.OrderedDict()' (manager.py:111)
MainThread 2012-12-23 22:57:38,341 garmin.ant.fs.manager ERROR "AttributeError: 'module' object has no attribute 'OrderedDict'" (manager.py:111)
MainThread 2012-12-23 22:57:38,342 garmin.ant.fs.manager DEBUG Run 5 (manager.py:113)
MainThread 2012-12-23 22:57:38,342 garmin.ant.easy.node DEBUG Stoping ant.easy (node.py:128)
MainThread 2012-12-23 22:57:38,342 garmin.ant.base.ant DEBUG Stoping ant.base (ant.py:127)
ant.base 2012-12-23 22:57:38,402 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-23 22:57:38,403 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-23 22:57:38,403 garmin.ant.base.ant DEBUG Ant runner stopped (ant.py:231)

910xt: getting a "ValueError"

Hi,

First, many thanks for your efforts on the Extractor. I just got a 910xt but when I run garmin.py I get an exception in Thread-1, with:

"ValueError: zero length field name in format" (output at the end).

Let me know if you need any more info. Cheers

Mike

$ python garmin.py
Request basic information...
zero length field name in format <type 'exceptions.ValueError'>
File "garmin.py", line 314, in
sys.exit(main())
File "garmin.py", line 309, in main
g.gogo()
File "garmin.py", line 291, in gogo
traceback.print_stack()
Traceback (most recent call last):
File "garmin.py", line 285, in gogo
self.init()
File "garmin.py", line 115, in init
m = self.request_message(0x00, Message.ID.RESPONSE_VERSION)
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/easy.py", line 132, in request_message
Ant.request_message(self, channel, messageId)
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 452, in request_message
self.write_message(message)
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 395, in write_message
_logger.debug("Write data: %s", _format_list(data))
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 39, in _format_list
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 336, in run
message = self.read_message()
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 410, in read_message
_format_list(data), _format_list(self._buffer))
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 39, in _format_list
return "[" + " ".join(map(lambda a: str.format("{:02x}", a), l)) + "]"
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 39, in
return "[" + " ".join(map(lambda a: str.format("{:02x}", a), l)) + "]"
ValueError: zero length field name in format
return "[" + " ".join(map(lambda a: str.format("{:02x}", a), l)) + "]"
File "/home/mike/tmp/Tigge-Garmin-Forerunner-610-Extractor-82e1fae/ant/base.py", line 39, in
return "[" + " ".join(map(lambda a: str.format("{:02x}", a), l)) + "]"
ValueError: zero length field name in format

FR 910XT list index out of range <type 'exceptions.IndexError'>

Hi,

I tried 610-extractor to download from 910xt device. It seems to kinda work because some fit files have been saved. three of them which I have probably created to ...
But at the end I get this exception shown below and the garmin still shows the transfer progress bar for quite some time (but it is not hang after pressing a few times different buttons it comes back).


Request basic information...
Starting system...
Open channel...
Searching...

String length: 16
Unit ID: 3843964727
Product name: Forerunner 910
3 128 128 574 1989-12-31 01:00:00
4 128 192 680 1989-12-31 01:00:00
5 128 192 1159 1989-12-31 01:00:00
6 128 192 317 1989-12-31 01:00:00
7 128 192 1159 1989-12-31 01:00:00
8 128 192 317 1989-12-31 01:00:00
9 128 192 1197 1989-12-31 01:00:00
10 128 160 1397 2012-03-30 20:55:54
11 128 160 1164 2012-03-30 23:30:38
12 128 160 1765 2012-03-30 23:38:56
13 128 192 72 1989-12-31 01:00:00
14 128 192 627 1989-12-31 01:00:00
15 128 128 72 1989-12-31 01:00:00
16 128 128 168 1989-12-31 01:00:00
17 128 192 72 1989-12-31 01:00:00
Done downloading 3-80-1989-12-31_01:00:00-574-288.fit
Done downloading 4-80-1989-12-31_01:00:00-680-288.fit
Done downloading 5-80-1989-12-31_01:00:00-1159-288.fit
Done downloading 6-80-1989-12-31_01:00:00-317-288.fit
Done downloading 7-80-1989-12-31_01:00:00-1159-317.fit
Done downloading 8-80-1989-12-31_01:00:00-317-317.fit
Done downloading 9-80-1989-12-31_01:00:00-1197-1197.fit
Done downloading 10-80-2012-03-30_20:55:54-1397-1397.fit
Done downloading 11-80-2012-03-30_23:30:38-1164-1164.fit
Done downloading 12-80-2012-03-30_23:38:56-1765-1765.fit
Done downloading 13-80-1989-12-31_01:00:00-72-72.fit
Done downloading 14-80-1989-12-31_01:00:00-627-627.fit
Done downloading 15-80-1989-12-31_01:00:00-72-72.fit
Done downloading 16-80-1989-12-31_01:00:00-168-168.fit
Done downloading 17-80-1989-12-31_01:00:00-72-72.fit
list index out of range <type 'exceptions.IndexError'>
File "garmin.py", line 341, in
sys.exit(main())
File "garmin.py", line 336, in main
g.gogo()
File "garmin.py", line 313, in gogo
traceback.print_stack()
Traceback (most recent call last):
File "garmin.py", line 308, in gogo
self.gofix()
File "/home/aloeff/Programming/misc-code/Garmin-Forerunner-610-Extractor/ant/easy.py", line 201, in gofix
self.on_burst_data(message._data)
File "garmin.py", line 257, in on_burst_data
self.got_ant_fs(data)
File "garmin.py", line 204, in got_ant_fs
self.ant_fs_next(self.fetch[0])
IndexError: list index out of range
was killed

segfault

hello,
I saw your project and would love it to work, that would be awesome to drop windows entirely
that said, I cloned the project, enter 'python garmin.py' as root (libusb needs root acces it seems, maybe a good udev rule would be enough to run as a "normal" user)
here is the output :
root@benbook:/home/lotsob/Garmin-Forerunner-610-Extractor# python garmin.py
configval
1
0,0
129
1
Segmentation fault

here is the dmesg output :

[1249078.768222] usb 2-1: new full speed USB device number 98 using uhci_hcd
[1249078.935525] usb 2-1: New USB device found, idVendor=0fcf, idProduct=1008
[1249078.935539] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1249078.935550] usb 2-1: Product: ANT USBStick2
[1249078.935558] usb 2-1: Manufacturer: Dynastream Innovations
[1249078.935567] usb 2-1: SerialNumber: 104
[1249574.212217] usb 2-1: reset full speed USB device number 98 using uhci_hcd
[1249574.363320] python[10930]: segfault at 24 ip b725f6be sp bffdde30 error 4 in libusb-1.0.so.0.1.0[b7255000+e000]

I would love to contribute more, tell me what would help :)
cheers

run as non root

I hate running scripts as root.
well, the 70-ant-usbstick2.rules you created was ok but here is what I changed for it to work on debian.
I will copy the process I used to create it as the mileage may vary depending on distributions.
1st step :
determine where is your ant2 usb stick with a lsusb :
....
Bus 002 Device 111: ID 0fcf:1008 Dynastream Innovations, Inc.
ok now you got those informations, you can use udevadm to print the needed info to create a udev rule :

udevadm info --query=all --name=/dev/bus/usb/002/111 --attribute-walk

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
KERNEL=="2-1"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{configuration}=="ANT USBStick2"
ATTR{bNumInterfaces}==" 1"
ATTR{bConfigurationValue}=="1"
ATTR{bmAttributes}=="80"
ATTR{bMaxPower}=="100mA"
ATTR{urbnum}=="5123"
ATTR{idVendor}=="0fcf"
ATTR{idProduct}=="1008"
ATTR{bcdDevice}=="0100"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bNumConfigurations}=="1"
ATTR{bMaxPacketSize0}=="32"
ATTR{speed}=="12"
ATTR{busnum}=="2"
ATTR{devnum}=="111"
ATTR{devpath}=="1"
ATTR{version}==" 2.00"
ATTR{maxchild}=="0"
ATTR{quirks}=="0x0"
ATTR{avoid_reset_quirk}=="0"
ATTR{authorized}=="1"
ATTR{manufacturer}=="Dynastream Innovations"
ATTR{product}=="ANT USBStick2"
ATTR{serial}=="104"

Now you got those info you can create a udev rule under /etc/udev/rules.d
At first I named mine 90-ant.rules, we'll see after that 90 at least on Debian isn't high enough but let's do that anyway :
KERNEL=="2-1", SUBSYSTEM=="usb", ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1008", SYMLINK+="ttyANT", MODE="0666", ACTION=="add"

then let's test it (the /devices/.... comes from above) :
udevadm test /devices/pci0000:00/0000:00:1d.0/usb2/2-1

well if you look at the result you'll see that /lib/udev/rules.d/91-permissions.rules put the permission back to a state below 666, so I just renamed 90-ant.rules to 92-ant.rules and that did the trick.
On top of that I have a symbolic link to /dev/ttyANT to access it easily (from http://www.thisisant.com/component/option,com_fireboard/Itemid,146/func,view/catid,25/id,799/limit,6/limitstart,6/#1752)

Needed: New name

Suggestions are welcome! Since it supports more devices than the Forerunner 610, and should (at least theoretically) be able to support other manufacturers, and should soon be able to upload content as well -- the name is just misleading.

Suggestions?

how do you create a .fit workout

As the code currently enables uploading workouts to the watch I wondered how people did to generate such a workout.

Let's say for instance I want a workout where I run 30' between 12 and 13km/h then I do 10*100m at 17km/h with a 20'' pause :
I know how to create it on the Garmin website, however I didn't see a way to save it as a .fit file then upload it to the watch.
I tried the Garmin Communicator "fake" plugin but couldn't make it work.
thanks for your help

garmin 310xt

Hello i am trying to upload my garmin FIT? files to garmin connect via linux... It seems that Gramin-extractor is not working could you please tell me what the problem is. Thankyou

1)agiofws@ixus:~$ lsusb | grep -i dyna*
Bus 005 Device 004: ID 0fcf:1004 Dynastream Innovations, Inc.

  1. i replaced every issue of 0x1008 ----->0x1004

ant/fs/manager.py: self._node = Node(0x0fcf, 0x1004)
ant/easy/test/test.py: n = Node(0x0fcf, 0x1004)
garmin.py:ID_PRODUCT = 0x1004
garmin.py: ID_PRODUCT = 0x1004

3)agiofws@ixus:~/garmin-extractor/Garmin-Forerunner-610-Extractor-master$ gdb python
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/...
Reading symbols from /usr/bin/python...(no debugging symbols found)...done.
(gdb) run garmin.py
Starting program: /usr/bin/python garmin.py
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff5e05700 (LWP 6053)]
[New Thread 0x7ffff5604700 (LWP 6054)]
Request basic information...
Traceback (most recent call last):
File "garmin.py", line 205, in main
g = Garmin()
File "garmin.py", line 56, in init
Application.init(self)
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/fs/manager.py", line 67, in init
m = self._node.request_message(Message.ID.RESPONSE_VERSION)
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/easy/node.py", line 65, in request_message
return self.wait_for_special(messageId)
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/easy/node.py", line 82, in wait_for_special
return wait_for_special(event_id, self._responses, self._responses_cond)
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/easy/filter.py", line 91, in wait_for_special
return wait_for_message(match, process, queue, condition)
File "/home/agiofws/garmin-extractor/Garmin-Forerunner-610-Extractor-master/ant/easy/filter.py", line 58, in wait_for_message
raise AntException("Timed out while waiting for message")
AntException: Timed out while waiting for message
Interrupted
Traceback (most recent call last):
File "garmin.py", line 214, in
sys.exit(main())
File "garmin.py", line 210, in main
g.stop()
UnboundLocalError: local variable 'g' referenced before assignment
stop

^C
Program received signal SIGINT, Interrupt.
0x00007ffff7bd03c0 in sem_wait () from /lib/libpthread.so.0
(gdb) backtrace
#0 0x00007ffff7bd03c0 in sem_wait () from /lib/libpthread.so.0
#1 0x00000000004d44e8 in PyThread_acquire_lock ()
#2 0x00000000004d8982 in ?? ()
#3 0x00000000004a7ba5 in PyEval_EvalFrameEx ()
#4 0x00000000004a95c1 in PyEval_EvalCodeEx ()
#5 0x00000000004a7752 in PyEval_EvalFrameEx ()
#6 0x00000000004a95c1 in PyEval_EvalCodeEx ()
#7 0x00000000004a7752 in PyEval_EvalFrameEx ()
#8 0x00000000004a95c1 in PyEval_EvalCodeEx ()
#9 0x0000000000538a10 in ?? ()
#10 0x000000000041ef47 in PyObject_Call ()
#11 0x0000000000427c1f in ?? ()
#12 0x00000000004212e3 in ?? ()
#13 0x0000000000424d00 in PyObject_CallMethod ()
#14 0x00000000004c9029 in Py_Finalize ()
#15 0x000000000041a156 in Py_Main ()
#16 0x00007ffff69e9c8d in __libc_start_main () from /lib/libc.so.6
#17 0x00000000004198d9 in _start ()

4)MainThread 2012-12-06 21:58:48,072 garmin.ant.base.ant DEBUG USB Find device, vendor 0xfcf, product 0x1004 (ant.py:44)
MainThread 2012-12-06 21:58:48,091 garmin.ant.base.ant DEBUG USB Config values: (ant.py:51)
MainThread 2012-12-06 21:58:48,091 garmin.ant.base.ant DEBUG Config 1 (ant.py:53)
MainThread 2012-12-06 21:58:48,092 garmin.ant.base.ant DEBUG Interface 0, Alt 0 (ant.py:55)
MainThread 2012-12-06 21:58:48,092 garmin.ant.base.ant DEBUG Endpoint 129 (ant.py:57)
MainThread 2012-12-06 21:58:48,092 garmin.ant.base.ant DEBUG Endpoint 1 (ant.py:57)
MainThread 2012-12-06 21:58:48,092 garmin.ant.base.ant DEBUG A kernel driver active, detatching (ant.py:62)
MainThread 2012-12-06 21:58:48,362 garmin.ant.base.ant DEBUG UBS Endpoint out: <usb.core.Endpoint object at 0x1a56e10>, 1 (ant.py:93)
MainThread 2012-12-06 21:58:48,363 garmin.ant.base.ant DEBUG UBS Endpoint in: <usb.core.Endpoint object at 0x1a56fd0>, 129 (ant.py:104)
ant.base 2012-12-06 21:58:48,364 garmin.ant.base.ant DEBUG Ant runner started (ant.py:159)
MainThread 2012-12-06 21:58:48,365 garmin.ant.easy.node DEBUG requesting message 0x3e (node.py:62)
MainThread 2012-12-06 21:58:48,370 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 3e d5
MainThread 2012-12-06 21:58:48,370 garmin.ant.easy.node DEBUG done requesting message 0x3e (node.py:64)
MainThread 2012-12-06 21:58:48,370 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f3114144aa0> (filter.py:37)
MainThread 2012-12-06 21:58:48,371 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:48,371 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:49,369 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:49,371 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:49,372 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:50,372 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:50,372 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:50,374 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
MainThread 2012-12-06 21:58:51,375 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:51,375 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:51,376 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:52,376 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:52,376 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:52,380 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:53,377 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:53,377 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:53,384 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:54,414 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:54,414 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:54,417 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:55,415 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:55,415 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:55,421 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:56,415 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:56,416 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:56,425 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
MainThread 2012-12-06 21:58:57,417 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-06 21:58:57,417 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f3114144aa0> (filter.py:55)
ant.base 2012-12-06 21:58:57,429 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:58:58,433 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:58:59,437 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:59:00,441 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:59:01,445 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:59:02,449 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:59:03,453 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)
ant.base 2012-12-06 21:59:04,457 garmin.ant.base.ant WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out') (ant.py:229)

Exception: Responded with error 6

Hi,

I have seen this message two times now. But I have working "downloads" as well. So this is not very common error I have seen.
for the typeerror I guess adding str() would be required:
lefty01@9ef781c

Downloading 2012-07-01_18-12-02-80-28381.fit - done
Downloading 2012-07-02_09-57-42-80-208864.fit cannot concatenate 'str' and 'int' objects 
  File "garmin.py", line 324, in 
    sys.exit(main())
  File "garmin.py", line 319, in main
    g.gogo()
  File "garmin.py", line 301, in gogo
    traceback.print_stack()
Traceback (most recent call last):
  File "garmin.py", line 296, in gogo
    self.gofix()
  File "/home/aloeff/code-repositories/github/Garmin-Forerunner-610-Extractor/ant/easy.py", line 240, in gofix
    self.on_burst_data(message._data)
  File "garmin.py", line 241, in on_burst_data
    res = self.fs.on_data(data)
  File "/home/aloeff/code-repositories/github/Garmin-Forerunner-610-Extractor/ant/fs.py", line 190, in on_data
    [0x00, 0x00] + packet._checksum.tolist() + [0x00, 0x00, 0x00, 0x00]])
  File "/home/aloeff/code-repositories/github/Garmin-Forerunner-610-Extractor/ant/easy.py", line 226, in send_burst_transfer
    [Message.Code.EVENT_TRANSFER_TX_FAILED])
  File "/home/aloeff/code-repositories/github/Garmin-Forerunner-610-Extractor/ant/easy.py", line 133, in wait_for_event
    self._event_cond)
  File "/home/aloeff/code-repositories/github/Garmin-Forerunner-610-Extractor/ant/easy.py", line 117, in _wait_for_message
    return process(message)
  File "/home/aloeff/code-repositories/github/Garmin-Forerunner-610-Extractor/ant/easy.py", line 131, in process
    raise Exception("Responded with error " + message._data[2])
TypeError: cannot concatenate 'str' and 'int' objects

Segmentation fault on start

Hi! Thanks for your work and I really like your effort to get our favourite Garmin toys working on linux :)

I'm having a problem:

Running the programm says as follows (as root):
Tigge-Garmin-Forerunner-610-Extractor-f7dfe71# python garmin.py
Speicherzugriffsfehler (Speicherabzug geschrieben)

Garmin.log says:
2012-05-07 20:43:03,950 garmin.ant.base DEBUG USB Find device, vendor 0xfcf, product 0x1008
2012-05-07 20:43:03,964 garmin.ant.base DEBUG USB Config values:
2012-05-07 20:43:04,050 garmin.ant.base DEBUG Config 1
2012-05-07 20:43:04,051 garmin.ant.base DEBUG Interface 0, Alt 0
2012-05-07 20:43:04,051 garmin.ant.base DEBUG Endpoint 129
2012-05-07 20:43:04,052 garmin.ant.base DEBUG Endpoint 1

DMesg says:

[ 58.070295] show_signal_msg: 45 callbacks suppressed
[ 58.070298] python[2357]: segfault at 40 ip 00007f1186939f12 sp 00007fffefe2f130 error 4 in libusb-1.0.so.0.1.0[7f1186930000+e000]
[ 354.924115] usb 3-1: reset full-speed USB device number 2 using uhci_hcd
[ 355.070511] python[2502]: segfault at 40 ip 00007f3d03c25f12 sp 00007fff43067f90 error 4 in libusb-1.0.so.0.1.0[7f3d03c1c000+e000]
[ 852.152115] usb 3-1: reset full-speed USB device number 2 using uhci_hcd
[ 852.303330] python[2545]: segfault at 40 ip 00007fafa5284f12 sp 00007fff0ba79600 error 4 in libusb-1.0.so.0.1.0[7fafa527b000+e000]
[ 924.724355] usb 3-1: USB disconnect, device number 2

PyUSB has been installed with pip, but aside from that: I don't have any clue of python by now, so please be patient with me ;)

The watch is a 310XT with a 0x1008 Garmin Stick, for testing purposes I have also a FR60 with a 0x1004 stick lying around for some days...

Thanks and Regards,
Chris

FR70 issue with Garmin.State.REQUESTID

When connecting to my Garmin FR70, it fails when parsing the response for REQUESTID.

The data returned from my device is the following:

[67, 52, 3, 3, 255, 255, 255, 255, 68, 132, 0, 5, 14, 158, 18, 0, 70, 82, 55, 48, 0, 0, 0, 0]

As the product name at the end is too short (not 14 characters as expected by the code), the app crashes. I hacked together a simple fix for this, so that the string is not hardcoded:

https://gist.github.com/cfb35603676929c02cb4

I don't know what the data is supposed to look like according to the protocol, so my solution is very much hacked. If you can point me in the direction of the protocol documentation, I can come up with a better solution.

Apart from this small (but critical) issue (and the fact that it sometimes takes very long to connect - see issue #15), it works with my FR70 (just uploaded my first data to Garmin Connect!). The dates are incorrect, but I'll investigate this another time.

Device not found

Maybe I'm doing something wrong, but I get this error trying to run the script:

$ python garmin.py 
Traceback (most recent call last):
  File "garmin.py", line 326, in 
    sys.exit(main())
  File "garmin.py", line 322, in main
    g = Garmin()
  File "garmin.py", line 61, in __init__
    EasyAnt.__init__(self, ID_VENDOR, ID_PRODUCT)
  File "/home/sindre/Diverse/Garmin-Forerunner-610-Extractor/ant/easy.py", line 46, in __init__
    Ant.__init__(self, idVendor, idProduct)
  File "/home/sindre/Diverse/Garmin-Forerunner-610-Extractor/ant/base.py", line 189, in __init__
    raise ValueError('Device not found')
ValueError: Device not found

garmin.log:

2012-08-24 11:59:10,298  garmin.ant.base  DEBUG     USB Find device, vendor 0xfcf, product 0x1008 (base.py:184)

lsusb:
Bus 002 Device 006: ID 0fcf:1004 Dynastream Innovations, Inc.

Python 2.7.3 and pyusb installed as told in readme. Is this a bug or am I doing anything wrong?

Time out exception

Hi,

I've been trying to retrieve data from a 910XT.

I have run the script a few times, with different outcomes.

  • I sometimes have the "Unhandled event 4:EVENT_TRANSFER_RX_FAILED", already reported
  • I've had the "8:EVENT_RX_FAIL_GO_TO_SEARCH" exception once (already reported as well)

But most often, I experience this output :

Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 1512991
Starting system...
Open channel...
Searching...
Traceback (most recent call last):
File "garmin.py", line 293, in gogo
self.gofix()
File "/home/nicolas/Tรฉlรฉchargements/Tigge-Garmin-Forerunner-610-Extractor-c8390a1/ant/easy.py", line 227, in gofix
self.on_broadcast_data(data)
File "garmin.py", line 272, in on_broadcast_data
self.send_acknowledged_data(0x00, [0x44, 0x04, 0x01, 0x00] + self.myid)
File "/home/nicolas/Tรฉlรฉchargements/Tigge-Garmin-Forerunner-610-Extractor-c8390a1/ant/easy.py", line 196, in send_acknowledged_data
self.send_acknowledged_data(channel, data)
File "/home/nicolas/Tรฉlรฉchargements/Tigge-Garmin-Forerunner-610-Extractor-c8390a1/ant/easy.py", line 192, in send_acknowledged_data
self.wait_for_event([Message.Code.EVENT_TRANSFER_TX_COMPLETED])
File "/home/nicolas/Tรฉlรฉchargements/Tigge-Garmin-Forerunner-610-Extractor-c8390a1/ant/easy.py", line 116, in wait_for_event
self._event_cond)
File "/home/nicolas/Tรฉlรฉchargements/Tigge-Garmin-Forerunner-610-Extractor-c8390a1/ant/easy.py", line 108, in _wait_for_message
raise AntException("Timed out while waiting for message");
AntException: Timed out while waiting for message

Here's the content of the garmin.log file :

2012-08-04 14:48:26,134 garmin.ant.base DEBUG USB Find device, vendor 0xfcf, product 0x1008
2012-08-04 14:48:26,171 garmin.ant.base DEBUG USB Config values:
2012-08-04 14:48:26,172 garmin.ant.base DEBUG Config 1
2012-08-04 14:48:26,173 garmin.ant.base DEBUG Interface 0, Alt 0
2012-08-04 14:48:26,173 garmin.ant.base DEBUG Endpoint 129
2012-08-04 14:48:26,174 garmin.ant.base DEBUG Endpoint 1
2012-08-04 14:48:26,174 garmin.ant.base DEBUG No kernel driver active
2012-08-04 14:48:26,485 garmin.ant.base DEBUG UBS Endpoint out: <usb.core.Endpoint object at 0xb6e1d72c>, 1
2012-08-04 14:48:26,487 garmin.ant.base DEBUG UBS Endpoint in: <usb.core.Endpoint object at 0xb6e1d74c>, 129
2012-08-04 14:48:26,488 garmin.ant.base DEBUG Ant runner started
2012-08-04 14:48:26,489 garmin DEBUG Creating directories
2012-08-04 14:48:26,491 garmin.ant.easy DEBUG requesting message 0x3e
2012-08-04 14:48:26,497 garmin.ant.base DEBUG Write data: [a4 02 4d 00 3e d5]
2012-08-04 14:48:26,498 garmin.ant.easy DEBUG done requesting message 0x3e
2012-08-04 14:48:26,498 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,498 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,499 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,500 garmin.ant.base DEBUG Read data: [a4 0b 3e 41 4a 4b 31 2e 30 34 52 41 46 00 9f](now have [a4 0b 3e 41 4a 4b 31 2e 30 34 52 41 46 00 9f] in buffer)
2012-08-04 14:48:26,501 garmin.ant.base WARNING Got unknown message, <ant.base.Message 3e:[41 4a 4b 31 2e 30 34 52 41 46 00] (s:a4, l:11, c:9f)>
2012-08-04 14:48:26,507 garmin.ant.easy DEBUG looking for matching message in deque([(None, 62, array('B', [65, 74, 75, 49, 46, 48, 52, 82, 65, 70, 0]))])
2012-08-04 14:48:26,508 garmin.ant.easy DEBUG - response found (None, 62, array('B', [65, 74, 75, 49, 46, 48, 52, 82, 65, 70, 0]))
2012-08-04 14:48:26,508 garmin.ant.easy DEBUG requesting message 0x54
2012-08-04 14:48:26,511 garmin.ant.base DEBUG Write data: [a4 02 4d 00 54 bf]
2012-08-04 14:48:26,511 garmin.ant.easy DEBUG done requesting message 0x54
2012-08-04 14:48:26,512 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,512 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,514 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,515 garmin.ant.base DEBUG Read data: [a4 06 54 08 03 00 ba 36 00 71](now have [a4 06 54 08 03 00 ba 36 00 71] in buffer)
2012-08-04 14:48:26,515 garmin.ant.base WARNING Got unknown message, <ant.base.Message 54:[08 03 00 ba 36 00] (s:a4, l:6, c:71)>
2012-08-04 14:48:26,521 garmin.ant.easy DEBUG looking for matching message in deque([(None, 84, array('B', [8, 3, 0, 186, 54, 0]))])
2012-08-04 14:48:26,521 garmin.ant.easy DEBUG - response found (None, 84, array('B', [8, 3, 0, 186, 54, 0]))
2012-08-04 14:48:26,522 garmin.ant.easy DEBUG requesting message 0x61
2012-08-04 14:48:26,524 garmin.ant.base DEBUG Read data: [a4 04 61 1f 16 17 00 df](now have [a4 04 61 1f 16 17 00 df] in buffer)
2012-08-04 14:48:26,524 garmin.ant.base WARNING Got unknown message, <ant.base.Message 61:[1f 16 17 00] (s:a4, l:4, c:df)>
2012-08-04 14:48:26,526 garmin.ant.base DEBUG Write data: [a4 02 4d 00 61 8a]
2012-08-04 14:48:26,527 garmin.ant.easy DEBUG done requesting message 0x61
2012-08-04 14:48:26,527 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,527 garmin.ant.easy DEBUG looking for matching message in deque([(None, 97, array('B', [31, 22, 23, 0]))])
2012-08-04 14:48:26,527 garmin.ant.easy DEBUG - response found (None, 97, array('B', [31, 22, 23, 0]))
2012-08-04 14:48:26,530 garmin.ant.base DEBUG Read data: [a4 01 6f 20 ea](now have [a4 01 6f 20 ea] in buffer)
2012-08-04 14:48:26,530 garmin.ant.base WARNING Got unknown message, <ant.base.Message 6f:[20] (s:a4, l:1, c:ea)>
2012-08-04 14:48:26,532 garmin.ant.base DEBUG Write data: [a4 01 4a 00 ef]
2012-08-04 14:48:26,533 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,533 garmin.ant.easy DEBUG looking for matching message in deque([(None, 111, array('B', [32]))])
2012-08-04 14:48:26,534 garmin.ant.easy DEBUG - response found (None, 111, array('B', [32]))
2012-08-04 14:48:26,536 garmin.ant.base DEBUG Read data: [a4 03 40 00 46 00 a1](now have [a4 03 40 00 46 00 a1] in buffer)
2012-08-04 14:48:26,538 garmin.ant.base DEBUG Write data: [a4 09 46 00 a8 a4 23 b9 f5 5e 63 c1 74]
2012-08-04 14:48:26,538 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,538 garmin.ant.easy DEBUG looking for matching message in deque([(0, 70, array('B', [0]))])
2012-08-04 14:48:26,538 garmin.ant.easy DEBUG - response found (0, 70, array('B', [0]))
2012-08-04 14:48:26,540 garmin.ant.base DEBUG Write data: [a4 03 42 00 00 00 e5]
2012-08-04 14:48:26,540 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,540 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,540 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,541 garmin.ant.base DEBUG Read data: [a4 03 40 00 42 00 a5](now have [a4 03 40 00 42 00 a5] in buffer)
2012-08-04 14:48:26,542 garmin.ant.easy DEBUG looking for matching message in deque([(0, 66, array('B', [0]))])
2012-08-04 14:48:26,542 garmin.ant.easy DEBUG - response found (0, 66, array('B', [0]))
2012-08-04 14:48:26,545 garmin.ant.base DEBUG Read data: [a4 03 40 00 43 00 a4](now have [a4 03 40 00 43 00 a4] in buffer)
2012-08-04 14:48:26,546 garmin.ant.base DEBUG Write data: [a4 03 43 00 00 10 f4]
2012-08-04 14:48:26,546 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,547 garmin.ant.easy DEBUG looking for matching message in deque([(0, 67, array('B', [0]))])
2012-08-04 14:48:26,547 garmin.ant.easy DEBUG - response found (0, 67, array('B', [0]))
2012-08-04 14:48:26,550 garmin.ant.base DEBUG Read data: [a4 03 40 00 44 00 a3](now have [a4 03 40 00 44 00 a3] in buffer)
2012-08-04 14:48:26,552 garmin.ant.base DEBUG Write data: [a4 02 44 00 ff 1d]
2012-08-04 14:48:26,552 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,552 garmin.ant.easy DEBUG looking for matching message in deque([(0, 68, array('B', [0]))])
2012-08-04 14:48:26,552 garmin.ant.easy DEBUG - response found (0, 68, array('B', [0]))
2012-08-04 14:48:26,554 garmin.ant.base DEBUG Write data: [a4 02 45 00 32 d1]
2012-08-04 14:48:26,554 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,555 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,555 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,555 garmin.ant.base DEBUG Read data: [a4 03 40 00 45 00 a2](now have [a4 03 40 00 45 00 a2] in buffer)
2012-08-04 14:48:26,557 garmin.ant.easy DEBUG looking for matching message in deque([(0, 69, array('B', [0]))])
2012-08-04 14:48:26,557 garmin.ant.easy DEBUG - response found (0, 69, array('B', [0]))
2012-08-04 14:48:26,559 garmin.ant.base DEBUG Write data: [a4 03 49 00 53 00 bd]
2012-08-04 14:48:26,565 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,565 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,565 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,566 garmin.ant.base DEBUG Read data: [a4 03 40 00 49 00 ae](now have [a4 03 40 00 49 00 ae] in buffer)
2012-08-04 14:48:26,569 garmin.ant.easy DEBUG looking for matching message in deque([(0, 73, array('B', [0]))])
2012-08-04 14:48:26,569 garmin.ant.easy DEBUG - response found (0, 73, array('B', [0]))
2012-08-04 14:48:26,571 garmin.ant.base DEBUG Write data: [a4 05 51 00 00 00 01 00 f1]
2012-08-04 14:48:26,571 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,571 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,571 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,572 garmin.ant.base DEBUG Read data: [a4 03 40 00 51 00 b6](now have [a4 03 40 00 51 00 b6] in buffer)
2012-08-04 14:48:26,574 garmin.ant.easy DEBUG looking for matching message in deque([(0, 81, array('B', [0]))])
2012-08-04 14:48:26,574 garmin.ant.easy DEBUG - response found (0, 81, array('B', [0]))
2012-08-04 14:48:26,577 garmin.ant.base DEBUG Read data: [a4 03 40 00 4b 00 ac](now have [a4 03 40 00 4b 00 ac] in buffer)
2012-08-04 14:48:26,578 garmin.ant.base DEBUG Write data: [a4 01 4b 00 ee]
2012-08-04 14:48:26,578 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:26,579 garmin.ant.easy DEBUG looking for matching message in deque([(0, 75, array('B', [0]))])
2012-08-04 14:48:26,579 garmin.ant.easy DEBUG - response found (0, 75, array('B', [0]))
2012-08-04 14:48:26,579 garmin.ant.easy DEBUG requesting message 0x52
2012-08-04 14:48:26,581 garmin.ant.base DEBUG Write data: [a4 02 4d 00 52 b9]
2012-08-04 14:48:26,581 garmin.ant.easy DEBUG done requesting message 0x52
2012-08-04 14:48:26,581 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,581 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:26,581 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b1c>
2012-08-04 14:48:26,582 garmin.ant.base DEBUG Read data: [a4 02 52 00 02 f6](now have [a4 02 52 00 02 f6] in buffer)
2012-08-04 14:48:26,583 garmin.ant.easy DEBUG looking for matching message in deque([(0, 82, array('B', [2]))])
2012-08-04 14:48:26,584 garmin.ant.easy DEBUG - response found (0, 82, array('B', [2]))
2012-08-04 14:48:27,585 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:28,589 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:29,593 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:30,597 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:31,601 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:32,605 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:33,610 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:34,614 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:35,618 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:36,622 garmin.ant.base WARNING <class 'usb.core.USBError'>, (110, 'Operation timed out')
2012-08-04 14:48:37,430 garmin.ant.base DEBUG Read data: [a4 09 4e 00 43 24 00 03 fa 03 01 00 7f](now have [a4 09 4e 00 43 24 00 03 fa 03 01 00 7f] in buffer)
2012-08-04 14:48:37,431 garmin DEBUG new state
2012-08-04 14:48:37,432 garmin DEBUG array('B', [67, 36, 0, 3, 250, 3, 1, 0])
2012-08-04 14:48:37,432 garmin DEBUG found device
2012-08-04 14:48:37,432 garmin DEBUG pair False, data True
2012-08-04 14:48:37,433 garmin.ant.easy DEBUG requesting message 0x51
2012-08-04 14:48:37,431 garmin.ant.base DEBUG Got broadcast data, examine queue to see if we should send anything back
2012-08-04 14:48:37,435 garmin.ant.base DEBUG - no messages in queue
2012-08-04 14:48:37,438 garmin.ant.base DEBUG Write data: [a4 02 4d 00 51 ba]
2012-08-04 14:48:37,439 garmin.ant.base DEBUG Read data: [a4 05 51 00 b3 20 01 05 67](now have [a4 05 51 00 b3 20 01 05 67] in buffer)
2012-08-04 14:48:37,439 garmin.ant.easy DEBUG done requesting message 0x51
2012-08-04 14:48:37,443 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:37,443 garmin.ant.easy DEBUG looking for matching message in deque([(0, 81, array('B', [179, 32, 1, 5]))])
2012-08-04 14:48:37,443 garmin.ant.easy DEBUG - response found (0, 81, array('B', [179, 32, 1, 5]))
2012-08-04 14:48:37,444 garmin.ant.easy DEBUG send acknowledged data 0
2012-08-04 14:48:37,444 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,444 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:37,445 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,554 garmin.ant.base DEBUG Read data: [a4 09 4e 00 43 24 00 03 fa 03 01 00 7f](now have [a4 09 4e 00 43 24 00 03 fa 03 01 00 7f] in buffer)
2012-08-04 14:48:37,554 garmin.ant.base DEBUG Got broadcast data, examine queue to see if we should send anything back
2012-08-04 14:48:37,557 garmin.ant.base DEBUG Write data: [a4 09 4f 00 44 02 19 04 ff ff ff ff b9]
2012-08-04 14:48:37,557 garmin.ant.base DEBUG - sent message from queue, <ant.base.Message 4f:[00 44 02 19 04 ff ff ff ff] (s:a4, l:9, c:b9)>
2012-08-04 14:48:37,561 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 0, 3, 250, 3, 1, 0]))])
2012-08-04 14:48:37,561 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,679 garmin.ant.base DEBUG Read data: [a4 09 4e 00 43 24 00 03 fa 03 01 00 7f](now have [a4 09 4e 00 43 24 00 03 fa 03 01 00 7f] in buffer)
2012-08-04 14:48:37,680 garmin.ant.base DEBUG No new data this period
2012-08-04 14:48:37,680 garmin.ant.base DEBUG Got broadcast data, examine queue to see if we should send anything back
2012-08-04 14:48:37,680 garmin.ant.base DEBUG - no messages in queue
2012-08-04 14:48:37,684 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 05 e3](now have [a4 03 40 00 01 05 e3] in buffer)
2012-08-04 14:48:37,685 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)>
2012-08-04 14:48:37,727 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 0, 3, 250, 3, 1, 0])), (0, 1, array('B', [5]))])
2012-08-04 14:48:37,728 garmin.ant.easy DEBUG - response found (0, 1, array('B', [5]))
2012-08-04 14:48:37,728 garmin.ant.easy DEBUG done sending acknowledged data 0
2012-08-04 14:48:37,729 garmin DEBUG New period, search, rf req
2012-08-04 14:48:37,731 garmin.ant.base DEBUG Write data: [a4 03 43 00 00 10 f4]
2012-08-04 14:48:37,732 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b1c>
2012-08-04 14:48:37,732 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:37,732 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b1c>
2012-08-04 14:48:37,733 garmin.ant.base DEBUG Read data: [a4 03 40 00 43 00 a4](now have [a4 03 40 00 43 00 a4] in buffer)
2012-08-04 14:48:37,737 garmin.ant.easy DEBUG looking for matching message in deque([(0, 67, array('B', [0]))])
2012-08-04 14:48:37,737 garmin.ant.easy DEBUG - response found (0, 67, array('B', [0]))
2012-08-04 14:48:37,740 garmin.ant.base DEBUG Read data: [a4 03 40 00 44 00 a3](now have [a4 03 40 00 44 00 a3] in buffer)
2012-08-04 14:48:37,741 garmin.ant.base DEBUG Write data: [a4 02 44 00 03 e1]
2012-08-04 14:48:37,742 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,742 garmin.ant.easy DEBUG looking for matching message in deque([(0, 68, array('B', [0]))])
2012-08-04 14:48:37,743 garmin.ant.easy DEBUG - response found (0, 68, array('B', [0]))
2012-08-04 14:48:37,747 garmin.ant.base DEBUG Write data: [a4 02 45 00 19 fa]
2012-08-04 14:48:37,748 garmin.ant.base DEBUG Read data: [a4 03 40 00 45 00 a2](now have [a4 03 40 00 45 00 a2] in buffer)
2012-08-04 14:48:37,749 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:37,750 garmin.ant.easy DEBUG looking for matching message in deque([(0, 69, array('B', [0]))])
2012-08-04 14:48:37,751 garmin.ant.easy DEBUG - response found (0, 69, array('B', [0]))
2012-08-04 14:48:37,753 garmin DEBUG talking on new frequency
2012-08-04 14:48:37,753 garmin.ant.easy DEBUG send acknowledged data 0
2012-08-04 14:48:37,756 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,756 garmin.ant.easy DEBUG looking for matching message in deque([])
2012-08-04 14:48:37,757 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,804 garmin.ant.base DEBUG Read data: [a4 09 4e 00 43 24 01 03 ff ff ff ff 86](now have [a4 09 4e 00 43 24 01 03 ff ff ff ff 86] in buffer)
2012-08-04 14:48:37,805 garmin.ant.base DEBUG Got broadcast data, examine queue to see if we should send anything back
2012-08-04 14:48:37,808 garmin.ant.base DEBUG Write data: [a4 09 4f 00 44 04 01 00 ff ff ff ff a3]
2012-08-04 14:48:37,809 garmin.ant.base DEBUG - sent message from queue, <ant.base.Message 4f:[00 44 04 01 00 ff ff ff ff] (s:a4, l:9, c:a3)>
2012-08-04 14:48:37,822 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255]))])
2012-08-04 14:48:37,823 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b54>
2012-08-04 14:48:37,929 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:37,930 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:37,938 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2]))])
2012-08-04 14:48:37,939 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b54>
2012-08-04 14:48:38,054 garmin.ant.base DEBUG Read data: [a4 09 4e 00 43 24 01 03 ff ff ff ff 86](now have [a4 09 4e 00 43 24 01 03 ff ff ff ff 86] in buffer)
2012-08-04 14:48:38,055 garmin.ant.base DEBUG Got broadcast data, examine queue to see if we should send anything back
2012-08-04 14:48:38,055 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255]))])
2012-08-04 14:48:38,056 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11b54>
2012-08-04 14:48:38,056 garmin.ant.base DEBUG - no messages in queue
2012-08-04 14:48:38,061 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 06 e0](now have [a4 03 40 00 01 06 e0] in buffer)
2012-08-04 14:48:38,062 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 06] (s:a4, l:3, c:e0)>
2012-08-04 14:48:38,065 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [6]))])
2012-08-04 14:48:38,066 garmin.ant.easy WARNING Transfer send failed:
2012-08-04 14:48:38,066 garmin.ant.easy WARNING (0, 1, array('B', [6]))
2012-08-04 14:48:38,067 garmin.ant.easy WARNING failed to send acknowledged data 0, retrying
2012-08-04 14:48:38,067 garmin.ant.easy DEBUG send acknowledged data 0
2012-08-04 14:48:38,067 garmin.ant.easy DEBUG wait for message matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,068 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255]))])
2012-08-04 14:48:38,068 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,179 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,179 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,184 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,185 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,304 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,305 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,350 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,351 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,429 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,429 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,467 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,467 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,554 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,555 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,583 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,583 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,679 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,680 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,699 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,700 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,804 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,805 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,815 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,816 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:38,929 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:38,930 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:38,933 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:38,934 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:39,054 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:39,055 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:39,100 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:39,101 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:39,179 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:39,180 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:39,216 garmin.ant.easy DEBUG looking for matching message in deque([(0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1000, array('B', [67, 36, 1, 3, 255, 255, 255, 255])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2])), (0, 1, array('B', [2]))])
2012-08-04 14:48:39,217 garmin.ant.easy DEBUG - could not find response matching <function match at 0xb6e11ae4>
2012-08-04 14:48:39,304 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:39,305 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>
2012-08-04 14:48:39,429 garmin.ant.base DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer)
2012-08-04 14:48:39,429 garmin.ant.base DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)>

Thanks!

Add indicator that data is being downloaded

When connecting to your watch and the index has been downloaded, all activities begin to download one by one. Each file that is being downloaded starts with a message that it's being downloaded right now. No further indication of what is happening is given to the user until it's done and the message " - done" is printed.

- 174:  128 190 2012-05-29 08:35:28
- 175:  128 72  1989-12-31 01:00:00
- 176:  128 361 1989-12-31 01:00:00
- 177:  128 72  1989-12-31 01:00:00
- 178:  128 125 1989-12-31 01:00:00
Skipping 1989-12-31_01-00-00-80-604.fit
Skipping 1989-12-31_01-00-00-80-573.fit
Skipping 1989-12-31_01-00-00-80-1213.fit
Skipping 1989-12-31_01-00-00-80-1213.fit
Skipping 2012-05-29_08-31-58-80-8642.fit
Skipping 2012-05-29_08-32-02-80-19310.fit
Skipping 2012-05-29_08-32-02-80-8845.fit
Skipping 2012-05-29_08-32-04-80-7628.fit
Downloading 2012-05-29_08-32-08-80-88414.fit - done
Downloading 2012-05-29_08-32-12-80-4512.fit

Some kind of indicator is needed between those two messages. In the log file I've found that "garmin.ant.fs" reports back every 512 byte(?), this information could be used for indication on how much of the current file has been downloaded. There is no need to track any history either cause you have (1) how much you have downloaded so far and (2) the total.

left 512, got 14848, total 88414, this 512 (garmin.ant.fs:161)

First suggestion

Just print out the percentage each time you reach this point in the code "got/total".

14848/88414 = 17% downloaded so far.
15360/88414 = 17% downloaded so far.
15872/88414 = 18% downloaded so far.    
16384/88414 = 19% downloaded so far.

To make it readable a new line would be needed each time so this would increase flow of information by alot and perhaps be to much information.

Second suggestion

Keep some history and print a "download bar" to the user. Let's say 100% is fifty dots.

# What it would look like when downloading in the above scenario 
Downloading 2012-05-29_08-32-08-80-88414.fit [........

# End result when one file is completed
Downloading 2012-05-29_08-32-08-80-88414.fit [.......... .......... .......... .......... ..........] - done

Final thoughts

This bug is perhaps more of a "nice-to-have" feature but I believe that it will make testing a bit easier as well.

FR70 - segfault and authentification pb

I am using Tigge-Garmin-Forerunner-610-Extractor-432a187 version under Fedora 16.

segfault :
need to modify base.py
208 dev.set_configuration()
209 dev.reset()
210 #dev.set_configuration()
as
208 dev.set_configuration()
209 dev.reset()
210 dev.set_configuration()

authentification:
ok when pairing but failed when using saved authfile
doing some sniffing on usb found following solution
In garmin.py, I have to modify: on_burst_data(self, data):

currently:
self.send_burst_transfer(0x00, [
[0x44, 0x04, 0x03, 0x08] + self.myid, self.auth,
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]])

ok for FR70

            if False:
              self.send_burst_transfer(0x00, [\
                [0x44, 0x04, 0x03, 0x08] + self.myid, self.auth, \
                [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]])
            else:
              self.send_burst_transfer(0x00, [\
                [0x44, 0x04, 0x03, 0x0c] + self.myid, self.auth, \
                [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]])

There is a small modification on the 4th byte of the message header.

Now working fine !
Thanks

Cannot connect: "No backend available", now "Configuration not set"

Hi

i'm trying to recover some lost TCX on my Gamrin 310TX via an ANT+ stick.
I'm on a Mac OSX by the way.

I've installed all the prerequisites, and I can run your script, but i get this error:

Traceback (most recent call last):
  File "garmin.py", line 205, in main
    g = Garmin()
  File "garmin.py", line 56, in __init__
    Application.__init__(self)
  File "/Users/walter/Downloads/Garmin-Forerunner-610-Extractor-master/ant/fs/manager.py", line 64, in __init__
    self._node = Node(0x0fcf, 0x1008)
  File "/Users/walter/Downloads/Garmin-Forerunner-610-Extractor-master/ant/easy/node.py", line 48, in __init__
    self.ant = Ant(idVendor, idProduct)
  File "/Users/walter/Downloads/Garmin-Forerunner-610-Extractor-master/ant/base/ant.py", line 45, in __init__
    dev = usb.core.find(idVendor=idVendor, idProduct=idProduct)
  File "/Library/Python/2.7/site-packages/usb/core.py", line 856, in find
    raise ValueError('No backend available')

I've checked the USB device id and it is the same as the one in the garmin.py script: 0x0fcf/0x1008
My watch is turned on.

I don't know what to do. I've read the device should ask to pair with the stick/usb but I fear we are way behin this step..

Any help

Truncate .fit files correctly

Truncate FIT files according to FIT header length. Now they use the file/package sizes from ANT-FS which seems to be wrong most of the time.

Incorrect dates in file index

The dates of the files in the index seems to be incorrect. Newer files seem to be more correct then older ones, and after a while my old files just seem to be from the same date. This is of course not correct and should be investigated.

The date inside of the FIT files are still correct.

(CC @rkistner)

Extractor on Linux and Garmin 310XT

One week ago I downloaded Garmin-Forerunner-610-Extractor. I am using it with a Garmin 310xt. I have successfully downloaded a few runs and bikes from the device.

It seems to work with the 310xt. I am using version version 2.4 of the the Software.

Thank you for making this.

If you want log files of the downloads, .... please let me know.

(sorry about calling this an issue, I don't know how to send a comment).

Final acknowledgment after all transfers has completed missing

I just noticed that when all activities are downloaded my watch "freezes" at 100% downloading... and returns to normal operation after 5 to 10 seconds (the normal reset after a failed transfer). I assume that there is not a proper "finished all transfers" message sent to the watch in the end.

This is a minor bug but adding this issue so we remember it for the future.

Could not run 40-convert_to_tcx.py - EACCES Permission denied

I am using this software on my computer running Linux Mint 14, kernel 3.5.0-17 and using python version 2.7.3. It will download data from my Garmin 310XT, but I cannot get the convert to tcx script to work. The fit2ctx script works well used by itself.

The output is:

Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 1397783
Starting system...
Searching...
Authenticating with Forerunner 310XT (3815069679)

  • Passkey: OK
    Downloading 1 file(s)
    Downloading 2013-02-17_15-55-40-80-8997.fit [..........]
  • Could not run 40-convert_to_tcx.py - EACCES Permission denied

Tried as root with the same output. If all fails, I guess the simple brute force solution is to write a script that runs fit2ctx over the entire directory, but I'd figure to ask here first.

fit files created with Tanita weight scale refuse to upload on garmin site

I have to say I get the activities very well with garmin.py

But for the .fit that contains weight info there might be an issue, I got that with a Tanita scale BC-1000

as you can see below .fit files that contains weight related info got the following names while traditionnal workouts have the date of extraction it seems :
1989-12-31_01-00-00-80-XXX.fit

lotso@bigbenn ~/Desktop/Garmin-Forerunner-610-Extractor $ ls -laht ~/.config/garmin-extractor/3824630472/activities/
total 316K
drwxr-xr-x 2 lotso lotso 4.0K Nov 17 13:38 .
-rw-r--r-- 1 lotso lotso 351 Nov 17 13:37 1989-12-31_01-00-00-80-351.fit
-rw-r--r-- 1 lotso lotso 125 Nov 17 10:21 1989-12-31_01-00-00-80-125.fit
-rw-r--r-- 1 lotso lotso 227 Nov 17 10:21 1989-12-31_01-00-00-80-227.fit
-rw-r--r-- 1 lotso lotso 324 Nov 17 10:21 1989-12-31_01-00-00-80-324.fit
-rw-r--r-- 1 lotso lotso 72 Nov 17 10:21 1989-12-31_01-00-00-80-72.fit
-rw-r--r-- 1 lotso lotso 21K Nov 17 10:21 2012-11-16_07-05-36-80-20818.fit
-rw-r--r-- 1 lotso lotso 46K Nov 17 10:21 2012-11-16_07-15-16-80-46843.fit
-rw-r--r-- 1 lotso lotso 92K Nov 17 10:20 2012-11-16_07-15-14-80-93588.fit
-rw-r--r-- 1 lotso lotso 54K Nov 17 10:18 2012-11-16_07-15-10-80-54968.fit
-rw-r--r-- 1 lotso lotso 788 Nov 17 10:18 2012-11-16_07-15-08-80-788.fit
-rw-r--r-- 1 lotso lotso 52K Nov 17 10:18 2012-11-16_07-15-06-80-52598.fit
-rw-r--r-- 1 lotso lotso 1.2K Nov 17 10:17 1989-12-31_01-00-00-80-1213.fit
-rw-r--r-- 1 lotso lotso 573 Nov 17 10:16 1989-12-31_01-00-00-80-573.fit
-rw-r--r-- 1 lotso lotso 604 Nov 17 10:16 1989-12-31_01-00-00-80-604.fit
drwxr-xr-x 3 lotso lotso 4.0K Nov 17 10:16 ..

what else can i provide to help ?

error

Hello,
I had troubles with my watch so I cleared the user data, redid the authentification, and at some point it stopped downloading with this error :
lotso@bigbenn:~/Desktop/Garmin-Forerunner-610-Extractor$ python garmin.py
Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 1848424
Starting system...
Searching...
Authenticating with Forerunner 610 (3824630472)

  • Pairing: OK
    Downloading 32 file(s) and uploading 0 file(s)
    Downloading 1989-12-31_01-00-00_1_65535.fit [..........]
    Downloading 1989-12-31_01-00-00_2_65535.fit [..........]
    Downloading 1989-12-31_01-00-00_3_2.fit [..........]
    Downloading 1989-12-31_01-00-00_3_1.fit [..........]
    Downloading 2013-02-13_06-51-30_4_57.fit [..........]
    Downloading 2013-02-13_06-51-34_4_58.fit [..........]
    Downloading 2013-02-13_06-51-36_4_59.fit [..........]
    Downloading 2013-02-13_06-51-36_4_60.fit [..........]
    Downloading 2013-02-13_06-51-38_4_61.fit [..........]
    Downloading 2013-02-13_06-51-40_4_62.fit [..........]
    Downloading 2013-02-13_06-51-44_4_63.fit [..........]
    Downloading 2013-02-13_06-51-44_4_64.fit [..........]
    Downloading 2013-02-13_06-51-46_4_65.fit [..........]
    Downloading 2013-02-13_06-51-46_4_66.fit [..........]
    Downloading 2013-02-13_06-51-46_4_67.fit [..........]
    Downloading 2013-02-13_06-51-50_4_68.fit [..........]
    Downloading 2013-02-13_06-51-52_4_69.fit [..........]
    Downloading 2013-02-13_06-51-54_4_70.fit [..........]
    Downloading 2013-02-13_06-51-56_4_71.fit [..........]
    Downloading 2013-02-13_06-51-58_4_72.fit [..........]
    Downloading 2013-02-13_06-52-14_4_73.fit [..........]
    Downloading 2013-02-13_06-52-16_4_74.fit [..........]
    Downloading 2013-02-13_06-52-18_4_75.fit [..........]
    Downloading 2013-02-13_06-52-22_4_76.fit [..........]
    Downloading 2013-02-13_06-50-44_4_53.fit [Traceback (most recent call last):
    File "garmin.py", line 344, in main
    g.start()
    File "/home/lotso/Desktop/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 191, in start
    self._main()
    File "/home/lotso/Desktop/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 123, in _main
    self.on_transport(beacon)
    File "garmin.py", line 243, in on_transport
    self.download_file(fileobject)
    File "garmin.py", line 301, in download_file
    data = self.download(fil.get_index(), self._get_progress_callback())
    File "/home/lotso/Desktop/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 305, in download
    response._get_argument("response"))
    TypeError: init() takes exactly 2 arguments (3 given)
    Interrupted: init() takes exactly 2 arguments (3 given)

then when I start the program again I got this :

lotso@bigbenn:~/Desktop/Garmin-Forerunner-610-Extractor$ python garmin.py
Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 1848424
Starting system...
Searching...
Authenticating with Forerunner 610 (3824630472)

  • Passkey: OK
    Downloading 8 file(s) and uploading 0 file(s)
    Downloading 2013-02-13_06-50-44_4_53.fit [Traceback (most recent call last):
    File "garmin.py", line 344, in main
    g.start()
    File "/home/lotso/Desktop/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 191, in start
    self._main()
    File "/home/lotso/Desktop/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 123, in _main
    self.on_transport(beacon)
    File "garmin.py", line 243, in on_transport
    self.download_file(fileobject)
    File "garmin.py", line 301, in download_file
    data = self.download(fil.get_index(), self._get_progress_callback())
    File "/home/lotso/Desktop/Garmin-Forerunner-610-Extractor/ant/fs/manager.py", line 305, in download
    response._get_argument("response"))
    TypeError: init() takes exactly 2 arguments (3 given)
    Interrupted: init() takes exactly 2 arguments (3 given)

program doesn't get my fit files for weight anymore

I didn't change anything, today the .fit files that used to be retrieved after I go on my weightscale are not retrieved anymore.
Here is a log, tell me if you need more info.
MainThread 2012-12-04 07:21:42,099 garmin.ant.base.ant DEBUG USB Find device, vendor 0xfcf, product 0x1008 (ant.py:44)
MainThread 2012-12-04 07:21:42,130 garmin.ant.base.ant DEBUG USB Config values: (ant.py:51)
MainThread 2012-12-04 07:21:42,131 garmin.ant.base.ant DEBUG Config 1 (ant.py:53)
MainThread 2012-12-04 07:21:42,131 garmin.ant.base.ant DEBUG Interface 0, Alt 0 (ant.py:55)
MainThread 2012-12-04 07:21:42,131 garmin.ant.base.ant DEBUG Endpoint 129 (ant.py:57)
MainThread 2012-12-04 07:21:42,132 garmin.ant.base.ant DEBUG Endpoint 1 (ant.py:57)
MainThread 2012-12-04 07:21:42,132 garmin.ant.base.ant DEBUG No kernel driver active (ant.py:65)
MainThread 2012-12-04 07:21:42,397 garmin.ant.base.ant DEBUG UBS Endpoint out: <usb.core.Endpoint object at 0x7f842899b850>, 1 (ant.py:93)
MainThread 2012-12-04 07:21:42,397 garmin.ant.base.ant DEBUG UBS Endpoint in: <usb.core.Endpoint object at 0x7f842899b810>, 129 (ant.py:104)
ant.base 2012-12-04 07:21:42,398 garmin.ant.base.ant DEBUG Ant runner started (ant.py:159)
MainThread 2012-12-04 07:21:42,398 garmin.ant.easy.node DEBUG requesting message 0x3e (node.py:62)
MainThread 2012-12-04 07:21:42,400 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 3e d5
MainThread 2012-12-04 07:21:42,401 garmin.ant.easy.node DEBUG done requesting message 0x3e (node.py:64)
MainThread 2012-12-04 07:21:42,401 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,401 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,401 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:42,401 garmin.ant.base.ant DEBUG Read data: [a4 0b 3e 41 4a 4b 31 2e 30 34 52 41 46 00 9f](now have [a4 0b 3e 41 4a 4b 31 2e 30 34 52 41 46 00 9f] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,408 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 62, array('B', [65, 74, 75, 49, 46, 48, 52, 82, 65, 70, 0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,409 garmin.ant.easy.filter DEBUG - response found (None, 62, array('B', [65, 74, 75, 49, 46, 48, 52, 82, 65, 70, 0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,409 garmin.ant.easy.node DEBUG requesting message 0x54 (node.py:62)
ant.base 2012-12-04 07:21:42,410 garmin.ant.base.ant DEBUG Read data: [a4 06 54 08 03 00 ba 36 00 71](now have [a4 06 54 08 03 00 ba 36 00 71] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,410 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 54 bf
MainThread 2012-12-04 07:21:42,411 garmin.ant.easy.node DEBUG done requesting message 0x54 (node.py:64)
MainThread 2012-12-04 07:21:42,412 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f84289906e0> (filter.py:37)
MainThread 2012-12-04 07:21:42,412 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,412 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f84289906e0> (filter.py:55)
MainThread 2012-12-04 07:21:42,415 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 84, array('B', [8, 3, 0, 186, 54, 0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,415 garmin.ant.easy.filter DEBUG - response found (None, 84, array('B', [8, 3, 0, 186, 54, 0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,416 garmin.ant.easy.node DEBUG requesting message 0x61 (node.py:62)
MainThread 2012-12-04 07:21:42,416 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 61 8a
MainThread 2012-12-04 07:21:42,416 garmin.ant.easy.node DEBUG done requesting message 0x61 (node.py:64)
MainThread 2012-12-04 07:21:42,417 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,417 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,417 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:42,417 garmin.ant.base.ant DEBUG Read data: [a4 04 61 68 34 1c 00 81](now have [a4 04 61 68 34 1c 00 81] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,424 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 97, array('B', [104, 52, 28, 0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,424 garmin.ant.easy.filter DEBUG - response found (None, 97, array('B', [104, 52, 28, 0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,425 garmin.ant.base.ant DEBUG Write data: a4 01 4a 00 ef
MainThread 2012-12-04 07:21:42,425 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f84289906e0> (filter.py:37)
MainThread 2012-12-04 07:21:42,425 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,426 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f84289906e0> (filter.py:55)
ant.base 2012-12-04 07:21:42,426 garmin.ant.base.ant DEBUG Read data: [a4 01 6f 20 ea](now have [a4 01 6f 20 ea] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,429 garmin.ant.easy.filter DEBUG looking for matching message in deque([(None, 111, array('B', [32]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,429 garmin.ant.easy.filter DEBUG - response found (None, 111, array('B', [32])) (filter.py:44)
MainThread 2012-12-04 07:21:42,430 garmin.ant.base.ant DEBUG Write data: a4 09 46 00 a8 a4 23 b9 f5 5e 63 c1 74
MainThread 2012-12-04 07:21:42,430 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,430 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,431 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:42,431 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 46 00 a1](now have [a4 03 40 00 46 00 a1] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,434 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 70, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,434 garmin.ant.easy.filter DEBUG - response found (0, 70, array('B', [0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,435 garmin.ant.base.ant DEBUG Write data: a4 03 42 00 00 00 e5
MainThread 2012-12-04 07:21:42,435 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f84289906e0> (filter.py:37)
MainThread 2012-12-04 07:21:42,436 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,436 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f84289906e0> (filter.py:55)
ant.base 2012-12-04 07:21:42,436 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 42 00 a5](now have [a4 03 40 00 42 00 a5] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,443 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 66, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,443 garmin.ant.easy.filter DEBUG - response found (0, 66, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:42,444 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 43 00 a4](now have [a4 03 40 00 43 00 a4] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,444 garmin.ant.base.ant DEBUG Write data: a4 03 43 00 00 10 f4
MainThread 2012-12-04 07:21:42,445 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,445 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,446 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
MainThread 2012-12-04 07:21:42,449 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 67, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,449 garmin.ant.easy.filter DEBUG - response found (0, 67, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:42,450 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 44 00 a3](now have [a4 03 40 00 44 00 a3] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,451 garmin.ant.base.ant DEBUG Write data: a4 02 44 00 ff 1d
MainThread 2012-12-04 07:21:42,451 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,452 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,452 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
MainThread 2012-12-04 07:21:42,455 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 68, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,455 garmin.ant.easy.filter DEBUG - response found (0, 68, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:42,456 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 45 00 a2](now have [a4 03 40 00 45 00 a2] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,456 garmin.ant.base.ant DEBUG Write data: a4 02 45 00 32 d1
MainThread 2012-12-04 07:21:42,457 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f84289906e0> (filter.py:37)
MainThread 2012-12-04 07:21:42,457 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,458 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f84289906e0> (filter.py:55)
MainThread 2012-12-04 07:21:42,459 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 69, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,459 garmin.ant.easy.filter DEBUG - response found (0, 69, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:42,460 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 49 00 ae](now have [a4 03 40 00 49 00 ae] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,460 garmin.ant.base.ant DEBUG Write data: a4 03 49 00 53 00 bd
MainThread 2012-12-04 07:21:42,461 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f84289906e0> (filter.py:37)
MainThread 2012-12-04 07:21:42,462 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 73, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,462 garmin.ant.easy.filter DEBUG - response found (0, 73, array('B', [0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,462 garmin.ant.base.ant DEBUG Write data: a4 05 51 00 00 00 01 00 f1
MainThread 2012-12-04 07:21:42,462 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,462 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,463 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:42,463 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 51 00 b6](now have [a4 03 40 00 51 00 b6] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,466 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 81, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,466 garmin.ant.easy.filter DEBUG - response found (0, 81, array('B', [0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,467 garmin.ant.base.ant DEBUG Write data: a4 01 4b 00 ee
MainThread 2012-12-04 07:21:42,467 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f84289906e0> (filter.py:37)
MainThread 2012-12-04 07:21:42,468 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,468 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f84289906e0> (filter.py:55)
ant.base 2012-12-04 07:21:42,468 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 4b 00 ac](now have [a4 03 40 00 4b 00 ac] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,475 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 75, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,475 garmin.ant.easy.filter DEBUG - response found (0, 75, array('B', [0])) (filter.py:44)
MainThread 2012-12-04 07:21:42,476 garmin DEBUG Creating directories (garmin.py:58)
MainThread 2012-12-04 07:21:42,476 garmin.ant.fs.manager DEBUG Link level (manager.py:95)
ant.base 2012-12-04 07:21:42,649 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 00 03 41 05 01 00 c2](now have [a4 09 4e 00 43 24 00 03 41 05 01 00 c2] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,690 garmin DEBUG on link, 66881, (1345, 1) (garmin.py:100)
MainThread 2012-12-04 07:21:42,690 garmin.ant.easy.channel DEBUG requesting message 0x51 (channel.py:91)
MainThread 2012-12-04 07:21:42,692 garmin.ant.base.ant DEBUG Write data: a4 02 4d 00 51 ba
MainThread 2012-12-04 07:21:42,692 garmin.ant.easy.channel DEBUG done requesting message 0x51 (channel.py:93)
MainThread 2012-12-04 07:21:42,693 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:42,693 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,693 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:42,750 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:42,750 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-04 07:21:42,752 garmin.ant.base.ant DEBUG Read data: [a4 05 51 00 c8 3a 01 05 06](now have [a4 05 51 00 c8 3a 01 05 06] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:42,773 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 00 03 41 05 01 00 c2](now have [a4 09 4e 00 43 24 00 03 41 05 01 00 c2] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:42,806 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 81, array('B', [200, 58, 1, 5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:42,807 garmin.ant.easy.filter DEBUG - response found (0, 81, array('B', [200, 58, 1, 5])) (filter.py:44)
MainThread 2012-12-04 07:21:42,807 garmin.ant.fs.command DEBUG packing 'D\x02\x13\x049\x05\x00\x00' in array('B', [68, 2, 19, 4, 57, 5, 0, 0]),<type 'array.array'> (command.py:76)
MainThread 2012-12-04 07:21:42,807 garmin.ant.easy.channel DEBUG send acknowledged data 0 (channel.py:98)
MainThread 2012-12-04 07:21:42,807 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f842a9d3cf8> (filter.py:37)
MainThread 2012-12-04 07:21:42,807 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:42,807 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f842a9d3cf8> (filter.py:55)
ant.base 2012-12-04 07:21:42,874 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:42,875 garmin.ant.base.ant DEBUG Write data: a4 09 4f 00 44 02 13 04 39 05 00 00 8f
ant.base 2012-12-04 07:21:42,875 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 4f:[00 44 02 13 04 39 05 00 00] (s:a4, l:9, c:8f)> (ant.py:217)
ant.base 2012-12-04 07:21:42,898 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 00 03 41 05 01 00 c2](now have [a4 09 4e 00 43 24 00 03 41 05 01 00 c2] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:42,898 garmin.ant.base.ant DEBUG No new data this period (ant.py:207)
ant.base 2012-12-04 07:21:42,999 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:42,999 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-04 07:21:43,001 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 05 e3](now have [a4 03 40 00 01 05 e3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,001 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)> (ant.py:201)
MainThread 2012-12-04 07:21:43,021 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,022 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [5])) (filter.py:44)
MainThread 2012-12-04 07:21:43,022 garmin.ant.easy.channel DEBUG done sending acknowledged data 0 (channel.py:101)
ant.base 2012-12-04 07:21:43,023 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 43 00 a4](now have [a4 03 40 00 43 00 a4] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:43,024 garmin.ant.base.ant DEBUG Write data: a4 03 43 00 00 10 f4
MainThread 2012-12-04 07:21:43,024 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:43,024 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:43,025 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:43,025 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,025 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)> (ant.py:201)
MainThread 2012-12-04 07:21:43,032 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 67, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,032 garmin.ant.easy.filter DEBUG - response found (0, 67, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:43,033 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 44 00 a3](now have [a4 03 40 00 44 00 a3] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:43,034 garmin.ant.base.ant DEBUG Write data: a4 02 44 00 03 e1
MainThread 2012-12-04 07:21:43,034 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f842a9d3cf8> (filter.py:37)
MainThread 2012-12-04 07:21:43,034 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:43,035 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f842a9d3cf8> (filter.py:55)
MainThread 2012-12-04 07:21:43,036 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 68, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,036 garmin.ant.easy.filter DEBUG - response found (0, 68, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:43,037 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 45 00 a2](now have [a4 03 40 00 45 00 a2] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:43,037 garmin.ant.base.ant DEBUG Write data: a4 02 45 00 13 f0
MainThread 2012-12-04 07:21:43,038 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:43,038 garmin.ant.easy.filter DEBUG looking for matching message in deque([]) (filter.py:40)
MainThread 2012-12-04 07:21:43,038 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
MainThread 2012-12-04 07:21:43,040 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 69, array('B', [0]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,040 garmin.ant.easy.filter DEBUG - response found (0, 69, array('B', [0])) (filter.py:44)
ant.base 2012-12-04 07:21:43,148 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 01 03 39 05 00 00 ba](now have [a4 09 4e 00 43 24 01 03 39 05 00 00 ba] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:43,169 garmin.ant.fs.manager DEBUG Auth layer (manager.py:101)
MainThread 2012-12-04 07:21:43,170 garmin DEBUG on authentication (garmin.py:105)
MainThread 2012-12-04 07:21:43,170 garmin.ant.easy.channel DEBUG send acknowledged data 0 (channel.py:98)
MainThread 2012-12-04 07:21:43,170 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f842a9d3cf8> (filter.py:37)
MainThread 2012-12-04 07:21:43,170 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,170 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f842a9d3cf8> (filter.py:55)
ant.base 2012-12-04 07:21:43,249 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:43,250 garmin.ant.base.ant DEBUG Write data: a4 09 4f 00 44 04 01 00 39 05 00 00 9f
ant.base 2012-12-04 07:21:43,250 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 4f:[00 44 04 01 00 39 05 00 00] (s:a4, l:9, c:9f)> (ant.py:217)
ant.base 2012-12-04 07:21:43,273 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 01 03 39 05 00 00 ba](now have [a4 09 4e 00 43 24 01 03 39 05 00 00 ba] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,273 garmin.ant.base.ant DEBUG No new data this period (ant.py:207)
ant.base 2012-12-04 07:21:43,374 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:43,374 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-04 07:21:43,376 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 05 e3](now have [a4 03 40 00 01 05 e3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,376 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)> (ant.py:201)
ant.base 2012-12-04 07:21:43,398 garmin.ant.base.ant DEBUG Read data: [a4 09 50 00 43 24 01 03 39 05 00 00 a4](now have [a4 09 50 00 43 24 01 03 39 05 00 00 a4] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,402 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 44 84 00 0e c8 3a f7 e3 f5](now have [a4 09 50 20 44 84 00 0e c8 3a f7 e3 f5] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,405 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 46 6f 72 65 72 75 6e 6e 84](now have [a4 09 50 40 46 6f 72 65 72 75 6e 6e 84] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,411 garmin.ant.base.ant DEBUG Read data: [a4 09 50 e0 65 72 20 36 31 30 00 00 1d](now have [a4 09 50 e0 65 72 20 36 31 30 00 00 1d] in buffer) (ant.py:271)
ant.fs 2012-12-04 07:21:43,434 garmin.ant.fs.command DEBUG parsing data array('B', [68, 132, 0, 14, 200, 58, 247, 227, 70, 111, 114, 101, 114, 117, 110, 110, 101, 114, 32, 54, 49, 48, 0, 0]) (command.py:340)
MainThread 2012-12-04 07:21:43,435 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,435 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [5])) (filter.py:44)
MainThread 2012-12-04 07:21:43,435 garmin.ant.easy.channel DEBUG done sending acknowledged data 0 (channel.py:101)
MainThread 2012-12-04 07:21:43,435 garmin.ant.fs.manager DEBUG Get command, t3, s1 (manager.py:140)
MainThread 2012-12-04 07:21:43,436 garmin DEBUG loaded authfile: array('B', [206, 5, 78, 161, 115, 96, 214, 158]) (garmin.py:72)
MainThread 2012-12-04 07:21:43,436 garmin DEBUG serial Forerunner 610, 3824630472, array('B', [206, 5, 78, 161, 115, 96, 214, 158]) (garmin.py:109)
MainThread 2012-12-04 07:21:43,436 garmin.ant.easy.channel DEBUG send burst transfer 0 (channel.py:113)
MainThread 2012-12-04 07:21:43,436 garmin.ant.base.ant DEBUG Send burst transfer, chan 0, data array('B', [68, 4, 3, 8, 57, 5, 0, 0, 206, 5, 78, 161, 115, 96, 214, 158]) (ant.py:338)
MainThread 2012-12-04 07:21:43,436 garmin.ant.base.ant DEBUG Send burst transfer, packet 0, data array('B', [68, 4, 3, 8, 57, 5, 0, 0]) (ant.py:346)
MainThread 2012-12-04 07:21:43,436 garmin.ant.base.ant DEBUG Send burst transfer, packet 1, data array('B', [206, 5, 78, 161, 115, 96, 214, 158]) (ant.py:346)
MainThread 2012-12-04 07:21:43,436 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:43,436 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,437 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:43,523 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 01 03 39 05 00 00 ba](now have [a4 09 4e 00 43 24 01 03 39 05 00 00 ba] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,624 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:43,625 garmin.ant.base.ant DEBUG Write data: a4 09 50 00 44 04 03 08 39 05 00 00 8a
ant.base 2012-12-04 07:21:43,625 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 50:[00 44 04 03 08 39 05 00 00] (s:a4, l:9, c:8a)> (ant.py:217)
ant.base 2012-12-04 07:21:43,626 garmin.ant.base.ant DEBUG Write data: a4 09 50 a0 ce 05 4e a1 73 60 d6 9e 22
ant.base 2012-12-04 07:21:43,626 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 50:[a0 ce 05 4e a1 73 60 d6 9e] (s:a4, l:9, c:22)> (ant.py:217)
ant.base 2012-12-04 07:21:43,648 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 01 03 39 05 00 00 ba](now have [a4 09 4e 00 43 24 01 03 39 05 00 00 ba] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,648 garmin.ant.base.ant DEBUG No new data this period (ant.py:207)
ant.base 2012-12-04 07:21:43,749 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:43,749 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-04 07:21:43,751 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 0a ec](now have [a4 03 40 00 01 0a ec] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,751 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 0a] (s:a4, l:3, c:ec)> (ant.py:201)
ant.base 2012-12-04 07:21:43,752 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 05 e3](now have [a4 03 40 00 01 05 e3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,752 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)> (ant.py:201)
ant.base 2012-12-04 07:21:43,773 garmin.ant.base.ant DEBUG Read data: [a4 09 50 00 43 24 01 03 39 05 00 00 a4](now have [a4 09 50 00 43 24 01 03 39 05 00 00 a4] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,780 garmin.ant.base.ant DEBUG Read data: [a4 09 50 a0 44 84 01 00 00 00 00 00 9c](now have [a4 09 50 a0 44 84 01 00 00 00 00 00 9c] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [10])), (0, 1, array('B', [5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [10])) (filter.py:44)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f842a9d3cf8> (filter.py:37)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f842a9d3cf8> (filter.py:37)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [5])) (filter.py:44)
MainThread 2012-12-04 07:21:43,801 garmin.ant.easy.channel DEBUG done sending burst transfer 0 (channel.py:117)
MainThread 2012-12-04 07:21:43,802 garmin.ant.fs.manager DEBUG Get command, t3, s0 (manager.py:140)
ant.fs 2012-12-04 07:21:43,813 garmin.ant.fs.command DEBUG parsing data array('B', [68, 132, 1, 0, 0, 0, 0, 0]) (command.py:340)
MainThread 2012-12-04 07:21:43,817 garmin.ant.fs.manager DEBUG Authenticated (manager.py:103)
MainThread 2012-12-04 07:21:43,817 garmin.ant.fs.manager DEBUG Download 0, o0, c0 (manager.py:189)
MainThread 2012-12-04 07:21:43,817 garmin.ant.fs.command DEBUG packing 'D\t\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00' in array('B', [68, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]),<type 'array.array'> (command.py:76)
MainThread 2012-12-04 07:21:43,817 garmin.ant.easy.channel DEBUG send burst transfer 0 (channel.py:113)
MainThread 2012-12-04 07:21:43,818 garmin.ant.base.ant DEBUG Send burst transfer, chan 0, data array('B', [68, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]) (ant.py:338)
MainThread 2012-12-04 07:21:43,818 garmin.ant.base.ant DEBUG Send burst transfer, packet 0, data array('B', [68, 9, 0, 0, 0, 0, 0, 0]) (ant.py:346)
MainThread 2012-12-04 07:21:43,818 garmin.ant.base.ant DEBUG Send burst transfer, packet 1, data array('B', [0, 1, 0, 0, 0, 0, 0, 0]) (ant.py:346)
MainThread 2012-12-04 07:21:43,818 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:43,818 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2]))]) (filter.py:40)
MainThread 2012-12-04 07:21:43,818 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:43,898 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9](now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:43,999 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:44,000 garmin.ant.base.ant DEBUG Write data: a4 09 50 00 44 09 00 00 00 00 00 00 b0
ant.base 2012-12-04 07:21:44,000 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 50:[00 44 09 00 00 00 00 00 00] (s:a4, l:9, c:b0)> (ant.py:217)
ant.base 2012-12-04 07:21:44,001 garmin.ant.base.ant DEBUG Write data: a4 09 50 a0 00 01 00 00 00 00 00 00 5c
ant.base 2012-12-04 07:21:44,001 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 50:[a0 00 01 00 00 00 00 00 00] (s:a4, l:9, c:5c)> (ant.py:217)
ant.base 2012-12-04 07:21:44,023 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9](now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,024 garmin.ant.base.ant DEBUG No new data this period (ant.py:207)
ant.base 2012-12-04 07:21:44,124 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:44,124 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-04 07:21:44,126 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 0a ec](now have [a4 03 40 00 01 0a ec] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,126 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 0a] (s:a4, l:3, c:ec)> (ant.py:201)
ant.base 2012-12-04 07:21:44,128 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 05 e3](now have [a4 03 40 00 01 05 e3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,128 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)> (ant.py:201)
ant.base 2012-12-04 07:21:44,148 garmin.ant.base.ant DEBUG Read data: [a4 09 50 00 43 24 03 03 39 05 00 00 a6](now have [a4 09 50 00 43 24 03 03 39 05 00 00 a6] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,152 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 44 89 00 00 60 01 00 00 71](now have [a4 09 50 20 44 89 00 00 60 01 00 00 71] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,155 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 00 00 00 00 60 01 00 00 dc](now have [a4 09 50 40 00 00 00 00 60 01 00 00 dc] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,158 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 01 10 00 00 00 00 00 00 8c](now have [a4 09 50 60 01 10 00 00 00 00 00 00 8c] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,161 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 00 00 00 00 00 00 00 00 dd](now have [a4 09 50 20 00 00 00 00 00 00 00 00 dd] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,164 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 01 00 01 0c 00 00 00 50 e1](now have [a4 09 50 40 01 00 01 0c 00 00 00 50 e1] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,168 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 00 e0 19 00 00 00 00 00 64](now have [a4 09 50 60 00 e0 19 00 00 00 00 00 64] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,170 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 02 00 01 0d 00 00 00 30 e3](now have [a4 09 50 20 02 00 01 0d 00 00 00 30 e3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,174 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 00 00 04 00 00 00 00 00 b9](now have [a4 09 50 40 00 00 04 00 00 00 00 00 b9] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,177 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 03 00 80 01 ff ff 00 90 8f](now have [a4 09 50 60 03 00 80 01 ff ff 00 90 8f] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,180 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 5c 02 00 00 00 00 00 00 83](now have [a4 09 50 20 5c 02 00 00 00 00 00 00 83] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:44,183 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [10])), (0, 1, array('B', [5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:44,183 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [10])) (filter.py:44)
MainThread 2012-12-04 07:21:44,183 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f842a9d3cf8> (filter.py:37)
MainThread 2012-12-04 07:21:44,183 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [5]))]) (filter.py:40)
MainThread 2012-12-04 07:21:44,183 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [5])) (filter.py:44)
MainThread 2012-12-04 07:21:44,183 garmin.ant.easy.channel DEBUG done sending burst transfer 0 (channel.py:117)
ant.base 2012-12-04 07:21:44,184 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 04 00 80 02 ff ff 00 d0 eb](now have [a4 09 50 40 04 00 80 02 ff ff 00 d0 eb] in buffer) (ant.py:271)
MainThread 2012-12-04 07:21:44,184 garmin.ant.fs.manager DEBUG Wait for response... (manager.py:191)
MainThread 2012-12-04 07:21:44,185 garmin.ant.fs.manager DEBUG Get command, t3, s0 (manager.py:140)
ant.base 2012-12-04 07:21:44,186 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 3d 02 00 00 00 00 00 00 a2](now have [a4 09 50 60 3d 02 00 00 00 00 00 00 a2] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,189 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 05 00 80 03 02 00 00 d0 89](now have [a4 09 50 20 05 00 80 03 02 00 00 d0 89] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,192 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 bd 04 00 00 00 00 00 00 04](now have [a4 09 50 40 bd 04 00 00 00 00 00 00 04] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,196 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 06 00 80 03 01 00 00 d0 c9](now have [a4 09 50 60 06 00 80 03 01 00 00 d0 c9] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,199 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 bd 04 00 00 00 00 00 00 64](now have [a4 09 50 20 bd 04 00 00 00 00 00 00 64] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,202 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 07 00 80 04 06 00 00 b0 88](now have [a4 09 50 40 07 00 80 04 06 00 00 b0 88] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,205 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 76 cd 00 00 ea 8d 08 2b 62](now have [a4 09 50 60 76 cd 00 00 ea 8d 08 2b 62] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,208 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 08 00 80 04 07 00 00 b0 e6](now have [a4 09 50 20 08 00 80 04 07 00 00 b0 e6] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,211 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 14 03 00 00 ec 8d 08 2b e8](now have [a4 09 50 40 14 03 00 00 ec 8d 08 2b e8] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,214 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 09 00 80 04 08 00 00 b0 a8](now have [a4 09 50 60 09 00 80 04 08 00 00 b0 a8] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,217 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 b8 d6 00 00 ee 8d 08 2b f3](now have [a4 09 50 20 b8 d6 00 00 ee 8d 08 2b f3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,220 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 0a 00 80 04 09 00 00 b0 8a](now have [a4 09 50 40 0a 00 80 04 09 00 00 b0 8a] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,223 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 94 6d 01 00 f2 8d 08 2b 39](now have [a4 09 50 60 94 6d 01 00 f2 8d 08 2b 39] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,227 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 0b 00 80 04 0a 00 00 b0 e8](now have [a4 09 50 20 0b 00 80 04 0a 00 00 b0 e8] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,230 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 fb b6 00 00 f4 8d 08 2b aa](now have [a4 09 50 40 fb b6 00 00 f4 8d 08 2b aa] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,233 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 0c 00 80 04 05 00 00 b0 a0](now have [a4 09 50 60 0c 00 80 04 05 00 00 b0 a0] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,236 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 52 51 00 00 b0 8b 08 2b c6](now have [a4 09 50 20 52 51 00 00 b0 8b 08 2b c6] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,239 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 0d 00 80 04 0b 00 00 b0 8f](now have [a4 09 50 40 0d 00 80 04 0b 00 00 b0 8f] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,242 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 b4 0e 01 00 12 9c 0b 2b 88](now have [a4 09 50 60 b4 0e 01 00 12 9c 0b 2b 88] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,245 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 0e 00 80 04 0c 00 00 b0 eb](now have [a4 09 50 20 0e 00 80 04 0c 00 00 b0 eb] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,248 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 5d 80 01 00 cc 3e 13 2b ab](now have [a4 09 50 40 5d 80 01 00 cc 3e 13 2b ab] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,251 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 0f 00 80 04 0d 00 00 b0 ab](now have [a4 09 50 60 0f 00 80 04 0d 00 00 b0 ab] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,255 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 26 d9 00 00 42 0f 17 2b 53](now have [a4 09 50 20 26 d9 00 00 42 0f 17 2b 53] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,258 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 10 00 80 04 0e 00 00 b0 97](now have [a4 09 50 40 10 00 80 04 0e 00 00 b0 97] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,261 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 10 35 01 00 30 f1 1d 2b 4e](now have [a4 09 50 60 10 35 01 00 30 f1 1d 2b 4e] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,264 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 11 00 80 04 0f 00 00 b0 f7](now have [a4 09 50 20 11 00 80 04 0f 00 00 b0 f7] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,267 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 14 03 00 00 18 f7 1e 2b 70](now have [a4 09 50 40 14 03 00 00 18 f7 1e 2b 70] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,270 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 12 00 80 07 ff ff 00 d0 d8](now have [a4 09 50 60 12 00 80 07 ff ff 00 d0 d8] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,273 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 48 00 00 00 00 00 00 00 95](now have [a4 09 50 20 48 00 00 00 00 00 00 00 95] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,276 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 13 00 80 08 ff ff 00 d0 f6](now have [a4 09 50 40 13 00 80 08 ff ff 00 d0 f6] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,279 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 44 01 00 00 00 00 00 00 d8](now have [a4 09 50 60 44 01 00 00 00 00 00 00 d8] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,283 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 14 00 80 09 ff ff 00 90 d0](now have [a4 09 50 20 14 00 80 09 ff ff 00 90 d0] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,286 garmin.ant.base.ant DEBUG Read data: [a4 09 50 40 7d 05 00 00 00 00 00 00 c5](now have [a4 09 50 40 7d 05 00 00 00 00 00 00 c5] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,289 garmin.ant.base.ant DEBUG Read data: [a4 09 50 60 15 00 80 0a ff ff 00 90 92](now have [a4 09 50 60 15 00 80 0a ff ff 00 90 92] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,292 garmin.ant.base.ant DEBUG Read data: [a4 09 50 20 7d 00 00 00 00 00 00 00 a0](now have [a4 09 50 20 7d 00 00 00 00 00 00 00 a0] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,298 garmin.ant.base.ant DEBUG Read data: [a4 09 50 c0 00 00 00 00 00 00 9a d9 7e](now have [a4 09 50 c0 00 00 00 00 00 00 9a d9 7e] in buffer) (ant.py:271)
ant.fs 2012-12-04 07:21:44,342 garmin.ant.fs.command DEBUG parsing data array('B', [68, 137, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 12, 0, 0, 0, 80, 0, 224, 25, 0, 0, 0, 0, 0, 2, 0, 1, 13, 0, 0, 0, 48, 0, 0, 4, 0, 0, 0, 0, 0, 3, 0, 128, 1, 255, 255, 0, 144, 92, 2, 0, 0, 0, 0, 0, 0, 4, 0, 128, 2, 255, 255, 0, 208, 61, 2, 0, 0, 0, 0, 0, 0, 5, 0, 128, 3, 2, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0, 6, 0, 128, 3, 1, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0, 7, 0, 128, 4, 6, 0, 0, 176, 118, 205, 0, 0, 234, 141, 8, 43, 8, 0, 128, 4, 7, 0, 0, 176, 20, 3, 0, 0, 236, 141, 8, 43, 9, 0, 128, 4, 8, 0, 0, 176, 184, 214, 0, 0, 238, 141, 8, 43, 10, 0, 128, 4, 9, 0, 0, 176, 148, 109, 1, 0, 242, 141, 8, 43, 11, 0, 128, 4, 10, 0, 0, 176, 251, 182, 0, 0, 244, 141, 8, 43, 12, 0, 128, 4, 5, 0, 0, 176, 82, 81, 0, 0, 176, 139, 8, 43, 13, 0, 128, 4, 11, 0, 0, 176, 180, 14, 1, 0, 18, 156, 11, 43, 14, 0, 128, 4, 12, 0, 0, 176, 93, 128, 1, 0, 204, 62, 19, 43, 15, 0, 128, 4, 13, 0, 0, 176, 38, 217, 0, 0, 66, 15, 23, 43, 16, 0, 128, 4, 14, 0, 0, 176, 16, 53, 1, 0, 48, 241, 29, 43, 17, 0, 128, 4, 15, 0, 0, 176, 20, 3, 0, 0, 24, 247, 30, 43, 18, 0, 128, 7, 255, 255, 0, 208, 72, 0, 0, 0, 0, 0, 0, 0, 19, 0, 128, 8, 255, 255, 0, 208, 68, 1, 0, 0, 0, 0, 0, 0, 20, 0, 128, 9, 255, 255, 0, 144, 125, 5, 0, 0, 0, 0, 0, 0, 21, 0, 128, 10, 255, 255, 0, 144, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 217]) (command.py:340)
MainThread 2012-12-04 07:21:44,349 garmin.ant.fs.file DEBUG Parse 'array('B', [1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 12, 0, 0, 0, 80, 0, 224, 25, 0, 0, 0, 0, 0, 2, 0, 1, 13, 0, 0, 0, 48, 0, 0, 4, 0, 0, 0, 0, 0, 3, 0, 128, 1, 255, 255, 0, 144, 92, 2, 0, 0, 0, 0, 0, 0, 4, 0, 128, 2, 255, 255, 0, 208, 61, 2, 0, 0, 0, 0, 0, 0, 5, 0, 128, 3, 2, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0, 6, 0, 128, 3, 1, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0, 7, 0, 128, 4, 6, 0, 0, 176, 118, 205, 0, 0, 234, 141, 8, 43, 8, 0, 128, 4, 7, 0, 0, 176, 20, 3, 0, 0, 236, 141, 8, 43, 9, 0, 128, 4, 8, 0, 0, 176, 184, 214, 0, 0, 238, 141, 8, 43, 10, 0, 128, 4, 9, 0, 0, 176, 148, 109, 1, 0, 242, 141, 8, 43, 11, 0, 128, 4, 10, 0, 0, 176, 251, 182, 0, 0, 244, 141, 8, 43, 12, 0, 128, 4, 5, 0, 0, 176, 82, 81, 0, 0, 176, 139, 8, 43, 13, 0, 128, 4, 11, 0, 0, 176, 180, 14, 1, 0, 18, 156, 11, 43, 14, 0, 128, 4, 12, 0, 0, 176, 93, 128, 1, 0, 204, 62, 19, 43, 15, 0, 128, 4, 13, 0, 0, 176, 38, 217, 0, 0, 66, 15, 23, 43, 16, 0, 128, 4, 14, 0, 0, 176, 16, 53, 1, 0, 48, 241, 29, 43, 17, 0, 128, 4, 15, 0, 0, 176, 20, 3, 0, 0, 24, 247, 30, 43, 18, 0, 128, 7, 255, 255, 0, 208, 72, 0, 0, 0, 0, 0, 0, 0, 19, 0, 128, 8, 255, 255, 0, 208, 68, 1, 0, 0, 0, 0, 0, 0, 20, 0, 128, 9, 255, 255, 0, 144, 125, 5, 0, 0, 0, 0, 0, 0, 21, 0, 128, 10, 255, 255, 0, 144, 125, 0, 0, 0, 0, 0, 0, 0])' as directory (file.py:46)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG - (16 - 32) 16, array('B', [1, 0, 1, 12, 0, 0, 0, 80, 0, 224, 25, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG Parse 'array('B', [1, 0, 1, 12, 0, 0, 0, 80, 0, 224, 25, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG - (32 - 48) 16, array('B', [2, 0, 1, 13, 0, 0, 0, 48, 0, 0, 4, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG Parse 'array('B', [2, 0, 1, 13, 0, 0, 0, 48, 0, 0, 4, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG - (48 - 64) 16, array('B', [3, 0, 128, 1, 255, 255, 0, 144, 92, 2, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG Parse 'array('B', [3, 0, 128, 1, 255, 255, 0, 144, 92, 2, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG - (64 - 80) 16, array('B', [4, 0, 128, 2, 255, 255, 0, 208, 61, 2, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,350 garmin.ant.fs.file DEBUG Parse 'array('B', [4, 0, 128, 2, 255, 255, 0, 208, 61, 2, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG - (80 - 96) 16, array('B', [5, 0, 128, 3, 2, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG Parse 'array('B', [5, 0, 128, 3, 2, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG - (96 - 112) 16, array('B', [6, 0, 128, 3, 1, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG Parse 'array('B', [6, 0, 128, 3, 1, 0, 0, 208, 189, 4, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG - (112 - 128) 16, array('B', [7, 0, 128, 4, 6, 0, 0, 176, 118, 205, 0, 0, 234, 141, 8, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG Parse 'array('B', [7, 0, 128, 4, 6, 0, 0, 176, 118, 205, 0, 0, 234, 141, 8, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG - (128 - 144) 16, array('B', [8, 0, 128, 4, 7, 0, 0, 176, 20, 3, 0, 0, 236, 141, 8, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,351 garmin.ant.fs.file DEBUG Parse 'array('B', [8, 0, 128, 4, 7, 0, 0, 176, 20, 3, 0, 0, 236, 141, 8, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG - (144 - 160) 16, array('B', [9, 0, 128, 4, 8, 0, 0, 176, 184, 214, 0, 0, 238, 141, 8, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG Parse 'array('B', [9, 0, 128, 4, 8, 0, 0, 176, 184, 214, 0, 0, 238, 141, 8, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG - (160 - 176) 16, array('B', [10, 0, 128, 4, 9, 0, 0, 176, 148, 109, 1, 0, 242, 141, 8, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG Parse 'array('B', [10, 0, 128, 4, 9, 0, 0, 176, 148, 109, 1, 0, 242, 141, 8, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG - (176 - 192) 16, array('B', [11, 0, 128, 4, 10, 0, 0, 176, 251, 182, 0, 0, 244, 141, 8, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG Parse 'array('B', [11, 0, 128, 4, 10, 0, 0, 176, 251, 182, 0, 0, 244, 141, 8, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG - (192 - 208) 16, array('B', [12, 0, 128, 4, 5, 0, 0, 176, 82, 81, 0, 0, 176, 139, 8, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG Parse 'array('B', [12, 0, 128, 4, 5, 0, 0, 176, 82, 81, 0, 0, 176, 139, 8, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,352 garmin.ant.fs.file DEBUG - (208 - 224) 16, array('B', [13, 0, 128, 4, 11, 0, 0, 176, 180, 14, 1, 0, 18, 156, 11, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG Parse 'array('B', [13, 0, 128, 4, 11, 0, 0, 176, 180, 14, 1, 0, 18, 156, 11, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG - (224 - 240) 16, array('B', [14, 0, 128, 4, 12, 0, 0, 176, 93, 128, 1, 0, 204, 62, 19, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG Parse 'array('B', [14, 0, 128, 4, 12, 0, 0, 176, 93, 128, 1, 0, 204, 62, 19, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG - (240 - 256) 16, array('B', [15, 0, 128, 4, 13, 0, 0, 176, 38, 217, 0, 0, 66, 15, 23, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG Parse 'array('B', [15, 0, 128, 4, 13, 0, 0, 176, 38, 217, 0, 0, 66, 15, 23, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG - (256 - 272) 16, array('B', [16, 0, 128, 4, 14, 0, 0, 176, 16, 53, 1, 0, 48, 241, 29, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG Parse 'array('B', [16, 0, 128, 4, 14, 0, 0, 176, 16, 53, 1, 0, 48, 241, 29, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,353 garmin.ant.fs.file DEBUG - (272 - 288) 16, array('B', [17, 0, 128, 4, 15, 0, 0, 176, 20, 3, 0, 0, 24, 247, 30, 43]) (file.py:58)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG Parse 'array('B', [17, 0, 128, 4, 15, 0, 0, 176, 20, 3, 0, 0, 24, 247, 30, 43])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG - (288 - 304) 16, array('B', [18, 0, 128, 7, 255, 255, 0, 208, 72, 0, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG Parse 'array('B', [18, 0, 128, 7, 255, 255, 0, 208, 72, 0, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG - (304 - 320) 16, array('B', [19, 0, 128, 8, 255, 255, 0, 208, 68, 1, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG Parse 'array('B', [19, 0, 128, 8, 255, 255, 0, 208, 68, 1, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG - (320 - 336) 16, array('B', [20, 0, 128, 9, 255, 255, 0, 144, 125, 5, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG Parse 'array('B', [20, 0, 128, 9, 255, 255, 0, 144, 125, 5, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,354 garmin.ant.fs.file DEBUG - (336 - 352) 16, array('B', [21, 0, 128, 10, 255, 255, 0, 144, 125, 0, 0, 0, 0, 0, 0, 0]) (file.py:58)
MainThread 2012-12-04 07:21:44,355 garmin.ant.fs.file DEBUG Parse 'array('B', [21, 0, 128, 10, 255, 255, 0, 144, 125, 0, 0, 0, 0, 0, 0, 0])' (16) as file <type 'array.array'> (file.py:98)
MainThread 2012-12-04 07:21:44,361 garmin.ant.fs.command DEBUG packing 'D\x03\x00\x00\x00\x00\x00\x00' in array('B', [68, 3, 0, 0, 0, 0, 0, 0]),<type 'array.array'> (command.py:76)
MainThread 2012-12-04 07:21:44,362 garmin.ant.easy.channel DEBUG send acknowledged data 0 (channel.py:98)
MainThread 2012-12-04 07:21:44,362 garmin.ant.easy.filter DEBUG wait for message matching <function match at 0x7f8428e8b5f0> (filter.py:37)
MainThread 2012-12-04 07:21:44,362 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2]))]) (filter.py:40)
MainThread 2012-12-04 07:21:44,362 garmin.ant.easy.filter DEBUG - could not find response matching <function match at 0x7f8428e8b5f0> (filter.py:55)
ant.base 2012-12-04 07:21:44,398 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9](now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,499 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:44,500 garmin.ant.base.ant DEBUG Write data: a4 09 4f 00 44 03 00 00 00 00 00 00 a5
ant.base 2012-12-04 07:21:44,500 garmin.ant.base.ant DEBUG - sent message from queue, <ant.base.Message 4f:[00 44 03 00 00 00 00 00 00] (s:a4, l:9, c:a5)> (ant.py:217)
ant.base 2012-12-04 07:21:44,523 garmin.ant.base.ant DEBUG Read data: [a4 09 4e 00 43 24 02 03 39 05 00 00 b9](now have [a4 09 4e 00 43 24 02 03 39 05 00 00 b9] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,523 garmin.ant.base.ant DEBUG No new data this period (ant.py:207)
ant.base 2012-12-04 07:21:44,624 garmin.ant.base.ant DEBUG Got broadcast data, examine queue to see if we should send anything back (ant.py:212)
ant.base 2012-12-04 07:21:44,624 garmin.ant.base.ant DEBUG - no messages in queue (ant.py:223)
ant.base 2012-12-04 07:21:44,626 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 05 e3](now have [a4 03 40 00 01 05 e3] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,626 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 05] (s:a4, l:3, c:e3)> (ant.py:201)
ant.base 2012-12-04 07:21:44,648 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,648 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)> (ant.py:201)
MainThread 2012-12-04 07:21:44,676 garmin.ant.easy.filter DEBUG looking for matching message in deque([(0, 1, array('B', [2])), (0, 1, array('B', [5])), (0, 1, array('B', [2]))]) (filter.py:40)
MainThread 2012-12-04 07:21:44,676 garmin.ant.easy.filter DEBUG - response found (0, 1, array('B', [5])) (filter.py:44)
MainThread 2012-12-04 07:21:44,676 garmin.ant.easy.channel DEBUG done sending acknowledged data 0 (channel.py:101)
MainThread 2012-12-04 07:21:44,676 garmin.ant.fs.manager DEBUG Run 5 (manager.py:113)
MainThread 2012-12-04 07:21:44,676 garmin.ant.easy.node DEBUG Stoping ant.easy (node.py:128)
MainThread 2012-12-04 07:21:44,677 garmin.ant.base.ant DEBUG Stoping ant.base (ant.py:127)
ant.base 2012-12-04 07:21:44,773 garmin.ant.base.ant DEBUG Read data: [a4 03 40 00 01 02 e4](now have [a4 03 40 00 01 02 e4] in buffer) (ant.py:271)
ant.base 2012-12-04 07:21:44,773 garmin.ant.base.ant DEBUG Got channel event, <ant.base.Message 40:[00 01 02] (s:a4, l:3, c:e4)> (ant.py:201)
ant.base 2012-12-04 07:21:44,774 garmin.ant.base.ant DEBUG Ant runner stopped (ant.py:231)

8:EVENT_RX_FAIL_GO_TO_SEARCH exception

Request basic information...
  ANT version:   AJK1.04RAF
  Capabilities:  array('B', [8, 3, 0, 186, 54, 0])
  Serial number: 1370464
Starting system...
Open channel...
Searching...
String length:  5
Unit ID:        1124595
Product name:   FR60
Traceback (most recent call last):
  File "./garmin.py", line 293, in gogo
    self.gofix()
  File "/home/anthony/garmin/Garmin-Forerunner-610-Extractor/ant/easy.py", line 237, in gofix
    + ":" + Message.Code.lookup(data[0]))
Exception: Unhandled event 8:EVENT_RX_FAIL_GO_TO_SEARCH

First run succeeded (all timestamps are wrong, but it is already reported), but subsequent launches fail.

Error running 40-convert_to_tcx.py

Hello Tigge,

Your Garmin-Forerunner-Extractor works great for my 310XT under Ubuntu 12.10.
But for some reason i can't get the the 40-convert_to_tcx.py script to work. I'm getting the following error:

Request basic information...
ANT version: AJK1.04RAF
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 1420869
Starting system...
Searching...
Authenticating with Forerunner 310XT (3819539095)

  • Passkey: OK
    Downloading 1 file(s)
    Downloading 2013-02-02_14-52-06-80-190.fit [..........]
    Convert to TCX exited with error code 1
    Traceback (most recent call last):
    File "/home/_/.config/garmin-extractor/scripts/fittotcx.py", line 246, in
    sys.exit(main())
    File "/home/
    __/.config/garmin-extractor/scripts/fittotcx.py", line 237, in main
    document = convert(sys.argv[1])
    File "/home/_
    **/.config/garmin-extractor/scripts/fittotcx.py", line 217, in convert
    activity = Activity(filename)
    File "/usr/lib/pymodules/python2.7/fitparse/base.py", line 29, in init
    f = open(f, 'rb')
    IOError: [Errno 2] No such file or directory: 'DOWNLOAD'
  • Could not run unitconvert.py - ENOEXEC Exec format error

Running the command python fittotcx.py filename works without any problems

Hope you can help

52:EVENT_SERIAL_QUE_OVERFLOW

has anybody seen this as well?

$ python garmin.py
Request basic information...
ANT version: AP2USB1.05
Capabilities: array('B', [8, 3, 0, 186, 54, 0])
Serial number: 254285915
Starting system...
Open channel...
Searching...
Traceback (most recent call last):
File "garmin.py", line 293, in gogo
self.gofix()
File "/home/aloeff/Programming/misc-code/Garmin-Forerunner-610-Extractor/ant/easy.py", line 237, in gofix
+ ":" + Message.Code.lookup(data[0]))
Exception: Unhandled event 52:EVENT_SERIAL_QUE_OVERFLOW

Convert to TCX exited with error code 1 (40-convert_to_tcx.py)

I'm not sure if I've used this script before or not but it doesn't work today =)

python 40-convert_to_tcx.py DOWNLOAD <path_to_fit_file>

Is it meant to work like this directly from command line on already downloaded files?
I get the following error message and no tcx files.

Convert to TCX exited with error code 1

Improve logging

Currently the program is very chatty with confusing output. Move all output that is not of interest to end users to the logging system and use file logging by default.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.