Git Product home page Git Product logo

python-ant-downloader's People

Contributors

binnisb avatar braiden avatar cz8s avatar dinomne avatar jdeerhake avatar jzacsh avatar kootox avatar mymegabyte avatar stewartsmith avatar superm1 avatar thewtex avatar timgates42 avatar tschutter avatar xaviershay 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

python-ant-downloader's Issues

Easy Install method: "unknown command"

Following your easy install process...when I get to the final command, "sudo pip python-ant-downloader" my terminal tells me: ERROR: unknown command "python-ant-downloader"

I'm pretty new to Linux (running KDE on top of Ubuntu 13.04) so I may be missing something very simple. Cheers!

[discussion, not an issue] Using the Garmin USB ANT Stick as a means to connect to the Internet wirelessly

I understand that this is not an "issue" at all and has little to do with the project, but I am curious as to the answer to this and how I might go about it. I would post this to the mailing list, but it doesn't seem to exist at the moment.

Is there a way to use my Garmin USB ANT Stick to communicate in a wireless tunnel of sorts between two computers (one being a server and one being a client), where the client computer (with the stick plugged into it) requests webpages from the server that is in a LAN with the client, and then the server (with WiFi access) transmits those pages to the client (without WiFi) through the stick, without any physical connections between the two? This would allow the Garmin USB ANT Stick to effectively act as a WiFi dongle (assuming it is in my LAN of course).

From initial reactions I've gathered on IRC, this seems possible, but I'm not quite sure of the means to do so. I am obviously on Linux, and I have a Forerunner 405CX as well as the stick if it would be needed. Thanks ahead of time for any help provided.

Caught error while communicating with device

Trying to connect to my 405cx with Ubuntu 12.04. Installed the packages as described in the installation procedure, packets gotten from Ubuntu-repo. python-ant-downloader from branch.

I had worse luck before connecting my 405cx to windows and upgrading the software (as well as setting the correct time) (batteries been dead for ages).

This the log I get now (ran with 'sudo ant-downloader' as there seems to be a permission issue with the udev-way):

[MainThread] 2012-03-18 19:10:25,335 DEBUG Executing Command. RESET_SYSTEM()
[Thread-1] 2012-03-18 19:10:25,340 DEBUG Processing reply. STARTUP_MESSAGE(startup_message=0)
[MainThread] 2012-03-18 19:10:25,342 DEBUG Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=84)
[Thread-1] 2012-03-18 19:10:25,344 DEBUG Processing reply. CAPABILITIES(max_channels=8, max_networks=3, standard_opts=0, advanced_opts1=186, advanced_opts2=54)
[MainThread] 2012-03-18 19:10:25,346 DEBUG Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=62)
[Thread-1] 2012-03-18 19:10:25,349 DEBUG Processing reply. VERSION(ant_version='AJK1.04RAF\x00')
[MainThread] 2012-03-18 19:10:25,352 DEBUG Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=97)
[Thread-1] 2012-03-18 19:10:25,354 DEBUG Processing reply. SERIAL_NUMBER(serial_number=1502931)
[MainThread] 2012-03-18 19:10:25,356 DEBUG Device Capabilities: CAPABILITIES(max_channels=8, max_networks=3, standard_opts=0, advanced_opts1=186, advanced_opts2=54)
[MainThread] 2012-03-18 19:10:25,356 DEBUG Device ANT Version: VERSION(ant_version='AJK1.04RAF\x00')
[MainThread] 2012-03-18 19:10:25,356 DEBUG Device SN#: SERIAL_NUMBER(serial_number=1502931)
[MainThread] 2012-03-18 19:10:25,357 INFO Searching for ANT devices.
[MainThread] 2012-03-18 19:10:25,357 DEBUG Executing Command. RESET_SYSTEM()
[Thread-1] 2012-03-18 19:10:25,359 DEBUG Processing reply. STARTUP_MESSAGE(startup_message=32)
[MainThread] 2012-03-18 19:10:25,362 DEBUG Executing Command. SET_NETWORK_KEY(network_number=0, network_key='\xa8\xa4#\xb9\xf5^c\xc1')
[Thread-1] 2012-03-18 19:10:25,364 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=70, msg_code=0)
[MainThread] 2012-03-18 19:10:25,367 DEBUG Executing Command. ASSIGN_CHANNEL(channel_number=0, channel_type=0, network_number=0)
[Thread-1] 2012-03-18 19:10:25,369 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=66, msg_code=0)
[MainThread] 2012-03-18 19:10:25,372 DEBUG Executing Command. SET_CHANNEL_ID(channel_number=0, device_number=0, device_type_id=0, trans_type=0)
[Thread-1] 2012-03-18 19:10:25,374 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=81, msg_code=0)
[MainThread] 2012-03-18 19:10:25,377 DEBUG Executing Command. SET_CHANNEL_PERIOD(channel_number=0, messaging_period=4096)
[Thread-1] 2012-03-18 19:10:25,379 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=67, msg_code=0)
[MainThread] 2012-03-18 19:10:25,381 DEBUG Executing Command. SET_CHANNEL_SEARCH_TIMEOUT(channel_number=0, search_timeout=255)
[Thread-1] 2012-03-18 19:10:25,383 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=68, msg_code=0)
[MainThread] 2012-03-18 19:10:25,387 DEBUG Executing Command. SET_CHANNEL_RF_FREQ(channel_number=0, rf_freq=50)
[Thread-1] 2012-03-18 19:10:25,389 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=69, msg_code=0)
[MainThread] 2012-03-18 19:10:25,393 DEBUG Executing Command. SET_SEARCH_WAVEFORM(channel_number=0, waveform=83)
[Thread-1] 2012-03-18 19:10:25,395 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=73, msg_code=0)
[MainThread] 2012-03-18 19:10:25,399 DEBUG Executing Command. OPEN_CHANNEL(channel_number=0)
[Thread-1] 2012-03-18 19:10:25,401 DEBUG Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=75, msg_code=0)
[MainThread] 2012-03-18 19:10:25,407 DEBUG Executing Command. ReadData(channel_number=0)
[Thread-1] 2012-03-18 19:10:25,409 DEBUG Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=2)
[Thread-1] 2012-03-18 19:10:25,914 ERROR Caught Exception handling message, session closing.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 777, in loop
for cmd in self.core.recv():
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 505, in recv
except IOError as (err, msg):
ValueError: need more than 1 value to unpack
[MainThread] 2012-03-18 19:10:26,409 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 83, in downloader
include_devices_with_no_data=args.force or not args.daemon)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 277, in search
beacon = Beacon.unpack(self.channel.recv_broadcast(timeout=timeout - time.time()))
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 862, in recv_broadcast
return self._session._send(ReadData(self.channel_number, RecvBroadcastData), timeout=timeout).data
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 648, in _send
raise AntError("Session closed.")
AntError: Session closed.
[MainThread] 2012-03-18 19:10:26,410 INFO Searching for ANT devices.
[MainThread] 2012-03-18 19:10:26,411 DEBUG Executing Command. RESET_SYSTEM()
[MainThread] 2012-03-18 19:10:26,411 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 83, in downloader
include_devices_with_no_data=args.force or not args.daemon)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 275, in search
self._open_antfs_search_channel()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 411, in _open_antfs_search_channel
self.ant_session.reset_system()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 566, in reset_system
self._send(ResetSystem(), timeout=.5, retry=5)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 648, in _send
raise AntError("Session closed.")
AntError: Session closed.
[MainThread] 2012-03-18 19:10:26,411 INFO Searching for ANT devices.
[MainThread] 2012-03-18 19:10:26,412 DEBUG Executing Command. RESET_SYSTEM()
[MainThread] 2012-03-18 19:10:26,412 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 83, in downloader
include_devices_with_no_data=args.force or not args.daemon)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 275, in search
self._open_antfs_search_channel()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 411, in _open_antfs_search_channel
self.ant_session.reset_system()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 566, in reset_system
self._send(ResetSystem(), timeout=.5, retry=5)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 648, in _send
raise AntError("Session closed.")
AntError: Session closed.
[MainThread] 2012-03-18 19:10:26,413 INFO Searching for ANT devices.
[MainThread] 2012-03-18 19:10:26,413 DEBUG Executing Command. RESET_SYSTEM()
[MainThread] 2012-03-18 19:10:26,413 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 83, in downloader
include_devices_with_no_data=args.force or not args.daemon)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 275, in search
self._open_antfs_search_channel()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 411, in _open_antfs_search_channel
self.ant_session.reset_system()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 566, in reset_system
self._send(ResetSystem(), timeout=.5, retry=5)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 648, in _send
raise AntError("Session closed.")
AntError: Session closed.
[MainThread] 2012-03-18 19:10:26,417 DEBUG Executing Command. RESET_SYSTEM()
[MainThread] 2012-03-18 19:10:26,417 WARNING Failed to cleanup resources on exist.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 115, in downloader
try: host.close()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 241, in close
self.ant_session.close()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 554, in close
self.reset_system()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 566, in reset_system
self._send(ResetSystem(), timeout=.5, retry=5)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 648, in _send
raise AntError("Session closed.")
AntError: Session closed.

No data downloaded from Garmin 910XT

Hi,

I have tried to download data from a Garmin 910XT. It looks like it gets connected but no data downloads. Have anyone else had similar issues? I have copy/pasted the output below.

[MainThread] 2012-07-22 20:58:51,320 WARNING Retryable error. 5 try(s) remaining. No reply to command. RESET_SYSTEM()
[MainThread] 2012-07-22 20:58:52,322 WARNING Retryable error. 4 try(s) remaining. No reply to command. RESET_SYSTEM()
[MainThread] 2012-07-22 20:58:52,338 INFO Searching for ANT devices.
[MainThread] 2012-07-22 20:59:03,845 DEBUG Got ANT-FS Beacon. device_number=0x575e Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 4, 'descriptor': 66864, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 36}
[MainThread] 2012-07-22 20:59:03,845 INFO Device has data. Linking.
[MainThread] 2012-07-22 20:59:03,846 DEBUG Setting period to match device, hz=8
[MainThread] 2012-07-22 20:59:03,849 DEBUG Linking with device. freq=2425mhz
[MainThread] 2012-07-22 20:59:04,092 INFO Pairing with device.
[MainThread] 2012-07-22 20:59:04,325 DEBUG Got client auth string. Auth{'auth_string': 'Forerunner 910XT', 'beacon': <antd.antfs.Beacon object at 0x2d79610>, 'op_id': None, 'response_type': 0, 'client_id': 3844626270, 'host_id': 3351, 'data_page_id': 68, 'command_id': 132}
[MainThread] 2012-07-22 20:59:04,325 DEBUG Device secret known.
[MainThread] 2012-07-22 20:59:04,609 DEBUG Device accepted key.
[MainThread] 2012-07-22 20:59:04,726 INFO Saving raw data to /home/mikael/.antd/0xe528575e/raw/20120722-205904.raw.
[MainThread] 2012-07-22 20:59:04,726 DEBUG A000: executing product request
[MainThread] 2012-07-22 20:59:06,818 DEBUG init_device_api: product_id=1328, software_version=2.40, description=['Forerunner 910XT Software Version 2.40', 'VERBMAP ', 'VERSMAP ']
[MainThread] 2012-07-22 20:59:06,818 DEBUG init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread] 2012-07-22 20:59:06,819 DEBUG Using link protocol L001.
[MainThread] 2012-07-22 20:59:06,819 DEBUG Using command protocol A010.
[MainThread] 2012-07-22 20:59:06,819 DEBUG Using A302['D311', 'D1018'] for: get_trks
[MainThread] 2012-07-22 20:59:06,819 DEBUG Using A906['D1015'] for: get_laps
[MainThread] 2012-07-22 20:59:06,819 DEBUG Using A1000['D1009'] for: get_runs
[MainThread] 2012-07-22 20:59:06,819 DEBUG A000: executing product request
[MainThread] 2012-07-22 20:59:09,066 DEBUG A1000: executing transfer runs
[MainThread] 2012-07-22 20:59:10,187 DEBUG A906: executing transfer laps
[MainThread] 2012-07-22 20:59:11,323 DEBUG A301: executing transfer tracks
[MainThread] 2012-07-22 20:59:12,442 INFO Closing session.
[MainThread] 2012-07-22 20:59:12,727 INFO Excuting plugins.
[MainThread] 2012-07-22 20:59:12,727 INFO TcxPlugin: processing /home/mikael/.antd/0xe528575e/raw/20120722-205904.raw.
[MainThread] 2012-07-22 20:59:12,728 DEBUG A000: executing product request
[MainThread] 2012-07-22 20:59:12,728 DEBUG init_device_api: product_id=1328, software_version=2.40, description=['Forerunner 910XT Software Version 2.40', 'VERBMAP ', 'VERSMAP ']
[MainThread] 2012-07-22 20:59:12,728 DEBUG init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread] 2012-07-22 20:59:12,729 DEBUG Using link protocol L001.
[MainThread] 2012-07-22 20:59:12,729 DEBUG Using command protocol A010.
[MainThread] 2012-07-22 20:59:12,729 DEBUG Using A302['D311', 'D1018'] for: get_trks
[MainThread] 2012-07-22 20:59:12,729 DEBUG Using A906['D1015'] for: get_laps
[MainThread] 2012-07-22 20:59:12,729 DEBUG Using A1000['D1009'] for: get_runs
[MainThread] 2012-07-22 20:59:12,729 DEBUG A1000: executing transfer runs
[MainThread] 2012-07-22 20:59:12,730 DEBUG A906: executing transfer laps
[MainThread] 2012-07-22 20:59:12,730 DEBUG A301: executing transfer tracks
[MainThread] 2012-07-22 20:59:12,730 DEBUG extract_runs: found 0 run(s)

How to remove old installation?

Hi, Braiden, thanks to provide us a great tool.

I noticed I was not able to install the newest GIT version manually, some files have existed in system. so, I'm wondering how to remove old manual installation if I want to install the newest version.

I have a Garmin 410 on my Archlinux, that will be nice if someone upload a PKGBUILD file to AUR.

problem with ubuntu 13.10

Hey there, I've been using your downloader for almost a year now and never had a problem. However, since I updated to ubuntu 13.10, it will no longer transmit tcx files to garmin connect. The trouble is that there is no error message. any idea where I could start looking for a problem?

install failing

Hi,
I'm tryin to install on puppy linux (puptahr). I went through the manual install and it seems to have been fairly well.
I got unknown distribution options during the install : entry points, and install requires warning but nothing else.
I guess since I am missing entry points I don't have the ant-downloader exe.
So I thought I could use main.py directly but when I try to run it, nothing happens. it exits with no message whatsoever.
am I going in the right direction here ? or should I take a step back and try to install correctly ?

Does not work with Garmin FR60 (AntTimeoutError)

Here is the log

[Thread-1]      2012-07-29 17:00:00,109 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]      2012-07-29 17:00:00,109 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]      2012-07-29 17:00:00,109 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]      2012-07-29 17:00:00,109 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]      2012-07-29 17:00:00,109 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]      2012-07-29 17:00:00,111 ERROR   USB Serial buffer overflow. PC reading too slow.
[Thread-1]      2012-07-29 17:00:00,112 WARNING Failed to receive RF beacon at expected period. channel_number=0
[MainThread]    2012-07-29 17:00:00,132 INFO    Searching for ANT devices.
[MainThread]    2012-07-29 17:00:39,534 DEBUG   Got ANT-FS Beacon. device_number=0x28f3 Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 4, 'descriptor': 66524, 'upload_enabled': 16, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 60}
[MainThread]    2012-07-29 17:00:39,534 INFO    Device has data. Linking.
[MainThread]    2012-07-29 17:00:39,534 DEBUG   Setting period to match device, hz=8
[MainThread]    2012-07-29 17:00:39,542 DEBUG   Linking with device. freq=2425mhz
[MainThread]    2012-07-29 17:00:39,781 INFO    Pairing with device.
[MainThread]    2012-07-29 17:00:40,012 DEBUG   Got client auth string. Auth{'auth_string': 'FR60\x00', 'beacon': , 'op_id': None, 'response_type': 0, 'client_id': 1124595, 'host_id': 4587, 'data_page_id': 68, 'command_id': 132}
[MainThread]    2012-07-29 17:00:40,012 DEBUG   Device unkown, requesting pairing.
[MainThread]    2012-07-29 17:00:44,047 DEBUG   Device paired. key=96f0b049357388e9e78bd46b
[MainThread]    2012-07-29 17:00:44,166 INFO    Saving raw data to /home/anthony/.antd/0x1128f3/raw/20120729-170044.raw.
[MainThread]    2012-07-29 17:00:44,166 DEBUG   A000: executing product request
[MainThread]    2012-07-29 17:00:49,399 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 97, in downloader
    dev = antd.Device(host)
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/garmin.py", line 312, in __init__
    self.init_device_api()
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/garmin.py", line 343, in init_device_api
    product_data = self.get_product_data()
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/garmin.py", line 318, in get_product_data
    return self.execute(A000())[0]
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/garmin.py", line 415, in execute
    pkt = self.stream.read()
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/antfs.py", line 407, in read
    direct_reply = GarminSendDirect.unpack(self.channel.read())
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 883, in read
    return self._session._send(ReadData(self.channel_number, ReadData), timeout=timeout).data
  File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/ant.py", line 645, in _send
    raise cmd.error
AntTimeoutError: No reply to command. ReadData(channel_number=0)
[MainThread]    2012-07-29 17:00:49,401 INFO    Searching for ANT devices.

FR60 prompts to accept pairing and them displays 'Transferring', but .raw file is empty.

'Creator' section of TCX file is not populated

This is mostly a cosmetic issue; I notice this when I upload Garmin 405 tracks to Strava. With no 'Creator' section, Strava reports "mobile device" instead of the actual GPS model.

From looking at the 'gant.c' sources, I think this is sufficient to get Strava to recognize the device ID:

diff --git a/antd/tcx.py b/antd/tcx.py
index cb4e7bb..af2d6b2 100644
--- a/antd/tcx.py
+++ b/antd/tcx.py
@@ -61,7 +61,7 @@ class TcxPlugin(plugin.Plugin):
                 try:
                     dir = self.tcx_output_dir % {"device_id": hex(device_sn)}
                     if not os.path.exists(dir): os.makedirs(dir)
-                    files = export_tcx(file, dir)
+                    files = export_tcx(device_sn, file, dir)
                     result.extend(files)
                     processed.append(file)
                 except Exception:
@@ -142,25 +142,38 @@ def create_lap(lap, sport_type):
         {"StartTime": format_time(lap.start_time.gmtime)},
         *elements)

-def create_activity(run):
+def create_creator(device):
+    major = device.device_id.software_version / 100
+    minor = device.device_id.software_version % 100
+    return E.Creator(E.Name("".join(device.device_id.description)),
+                     E.UnitId(str(device.stream.device_id)),
+                     E.ProductID(str(device.device_id.product_id)),
+                     E.Version(E.VersionMajor(str(major)),
+                               E.VersionMinor(str(minor)),
+                               E.BuildMajor("0"),
+                               E.BuildMinor("0")))
+
+def create_activity(device, run):
+    laps = list(create_lap(l, run.sport_type) for l in run.laps)
     return E.Activity(
         {"Sport": format_sport(run.sport_type)},
         E.Id(format_time(run.time.gmtime)),
-        *list(create_lap(l, run.sport_type) for l in run.laps))
+        *(laps + [create_creator(device)]))

-def create_document(runs):
+def create_document(device, runs):
     doc = E.TrainingCenterDatabase(
         E.Activities(
-            *list(create_activity(r) for r in runs)))
+            *list(create_activity(device, r) for r in runs)))
     return doc

-def export_tcx(raw_file_name, output_dir):
+def export_tcx(device_sn, raw_file_name, output_dir):
     """
     Given a garmin raw packet dump, tcx to specified output directory.
     """
     with open(raw_file_name) as file:
         result = []
         host = garmin.MockHost(file.read())
+        host.device_id = device_sn
         device = garmin.Device(host)
         run_pkts = device.get_runs()
         runs = garmin.extract_runs(device, run_pkts)
@@ -169,7 +182,7 @@ def export_tcx(raw_file_name, output_dir):
             tcx_full_path = os.path.sep.join([output_dir, tcx_name])
             _log.info("tcx: writing %s -> %s.", os.path.basename(raw_file_name), tcx_full_path)
             with open(tcx_full_path, "w") as file:
-                doc = create_document([run])
+                doc = create_document(device, [run])
                 file.write(etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="UTF-8"))
             result.append(tcx_full_path)
         return result

setup.py sdist/bdist is missing antd/antd.cfg (no MANIFEST.in)

This was also reported as

#19

where cfg.write_default_config() fails.

The default antd/antd.cfg file is in GIT but is not installed by setup.py in some cases (e.g. sdist, bdist_rpm) since it is not part of the file manifest. It is referenced as 'package_data' in setup.py but this not not sufficient.

I believe the fix involves adding 'include antd/*.cfg' to a new MANIFEST.in file at the top level of the GIT sources.

Found device, but no data available for download.

First off, thanks for writing this software. I've been using it for about 18 months with zero issues. That is, until today! Beyond that, it's worked fine.

I first installed this in Sept 2012 on my current laptop. My OS install and watch haven't changed. I used this program 2 weeks ago to take some runs off the watch, and it worked as expected. I went on vacation, went for a few runs and when I came home the other day and tried to grab the runs off the watch, I got the error in the title.

I thought maybe some recent OS update might've broke something, so I installed the newest version of your software from master. The error message was styled a little differently, but it was the same.

I am running Ubuntu 12.04.4 x86 with a Garmin 405. I havent changed the watch settings, and confirmed that the watch is setup to push data out.

Looking in ~/.antd/0xe42061bdL/raw/, I don't see any pushes from today, thinking maybe it partially pulled the data and the program was trying to deal with duplicate entries.

I am stumped but am open to help diagnose however I can.

thanks!

When I run the script, I get the following output:

sudo ant-downloader 
[MainThread]    2014-03-25 19:48:55,989 INFO    Found device with vid(0x0fcf) pid(0x1008), but interface already claimed.
[MainThread]    2014-03-25 19:48:55,989 WARNING Failed to find Garmin nRF24AP2 (newer) USB Stick.
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/antd/cfg.py", line 92, in create_hardware
    return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
  File "/usr/local/lib/python2.7/dist-packages/antd/hw.py", line 61, in __init__
    raise NoUsbHardwareFound(errno.ENOENT, "No available device matching vid(0x%04x) pid(0x%04x)." % (id_vendor, id_product))
NoUsbHardwareFound: [Errno 2] No available device matching vid(0x0fcf) pid(0x1008).
[MainThread]    2014-03-25 19:48:55,989 WARNING Looking for nRF24AP1 (older) Serial USB Stick.
[MainThread]    2014-03-25 19:48:56,998 INFO    Searching for ANT devices.
[MainThread]    2014-03-25 19:48:58,440 DEBUG   Got ANT-FS Beacon. device_number=0x61bd Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 0, 'device_state': 0, 'period': 1, 'descriptor': 131073, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 9}
[MainThread]    2014-03-25 19:48:58,441 INFO    Found device, but no data available for download.

Error posting to Garmin Connect

I have setup the app, edited the antd.cfg with the correct username/password for my Garmin account (and I have triple checked this). However, when it tries to post to Garmin, I get the following error:

[MainThread] 2012-07-06 08:48:10,617 DEBUG Attempting to reprocess failed files.
[MainThread] 2012-07-06 08:48:10,617 DEBUG Fetching cookies from Garmin Connect.
[MainThread] 2012-07-06 08:48:11,750 DEBUG Posting login credentials to Garmin Connect. username=progeek
[MainThread] 2012-07-06 08:48:14,341 DEBUG Checking if login was successful.
[MainThread] 2012-07-06 08:48:14,669 WARNING Failed to uplaod to Garmin Connect.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/connect.py", line 66, in data_availible
self.login()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/connect.py", line 97, in login
raise InvalidLogin()
InvalidLogin

This is my connect section from my antd.cfg file:

[antd.connect]
; true to enable upload to garmin connect
; make sure to fill in username / password
enabled = true
; Garmin Connect username / password
; Note that you can put this section in
; ~/.antd/antd.cfg if you don't
; want username / password in your git tree
username = progeek
password = ************
; file used to keep track of all tcx which
; are pending upload. files in the cache
; will have upload re-attempted until successful
; or until cache is deleted.
cache = ~/.antd/garmin-connect-upload-queue.txt

So the question is what am I missing?

Garmin FR70 problems

I've not done much coding/programming ever, so please forgive me if this has already been answered.
I can't seem to figure out what I need to do to fix this error which is preventing me from getting the data off of my ANT stick which is USB2 for my Garmin FR70.

daniel@daniel-1000H ~ $ ant-downloader
Traceback (most recent call last):
File "/usr/local/bin/ant-downloader", line 9, in
load_entry_point('python-ant-downloader==12.03.21', 'console_scripts', 'ant-downloader')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 337, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2279, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1989, in load
entry = import(self.module_name, globals(),globals(), ['name'])
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.21-py2.7.egg/antd/init.py", line 33, in
import antd.ant as ant
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.21-py2.7.egg/antd/ant.py", line 34, in
from message import Message
ImportError: No module named message

architecture doesn't promote community-wide collaboration?

Hi there,

Firstly thanks for your great work on this project!

If I understand correctly from your README and from Tigge/openant#1, in the Linux Garmin syncing world, there seem to be 4 distinct challenges:

  1. Downloading from devices by using the Garmin Device Interface Spec over an ANT-FS transport (necessary for FR405/410)
  2. Downloading from devices via ANT-FS (necessary for FR60/310/610/910xt)
  3. Uploading .fit / .tcx files to Garmin Connect
  4. Building a user-friendly wrapper for the above operations, which offers a daemon mode and/or similar UX to the Garmin ANT Agent.

Bearing these in mind, it seems the following observations are true:

  • This project currently addresses 1., 3., and 4., but not 2.
  • GcpUploader currently addresses 3.
  • https://github.com/Tigge/Garmin-Forerunner-610-Extractor currently addresses 2. but is being split into two parts:
    • https://github.com/Tigge/openant is a lower-level library for the ANT, ANT+ and ANT-FS which should make it easier to address 1. and 2. but will still require additional code which consumes the library API in order to implement full download support.
    • This additional code will be antfs-cli, which by use of a plugin system will address 1., 2., 3., and 4.
  • There are other projects such as tapiriik which address 3.

Forgive me if I misunderstood something, but it seems to me that even though there is a large overlap in goals between this project and @Tigge's work, there is very little opportunity for code sharing, even though all the existing code is Python. I feel that the Linux part of the Garmin community is relatively tiny, and IMHO it would be a shame if this tiny community split into two fragments rather than working together on a universal solution. Is there a way that the two projects could be united so that we can progress much faster? Here are a few architectural suggestions:

  • keep upload to Garmin Connect (3.) functionality as a separate project with interfaces which can be used by both projects (e.g. could be CLI or Python module)
  • keep download from Garmin devices (1. and 2.) as separate projects
  • standardize on a API for 1. and 2. so that any implementations of (1. and 2.) can be used as plugins by both this project and by the upcoming antfs-cli

I realise that in the short term this would require a bit more work, but in the longer term I think it could benefit our small community a lot.

Thanks for listening!

(This suggestion was prompted by the discussion in Tigge/antfs-cli#96. See also Tigge/openant#1.)

Found device with vid(0x0fcf) pid(0x1004), but interface already claimed.

So firstly my ANT device seems to have a different PID, its 1004, not 1008. I've updated the udev rule to account for it:

SUBSYSTEM=="usb", ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1004", MODE="666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1008", MODE="666"

That's all OK now. When I try and startup ant-downloader though (ubuntu 12.04), it errors out with this:

[MainThread]    2012-03-19 08:52:32,413 INFO    Found device with vid(0x0fcf) pid(0x1004), but interface already claimed.
Traceback (most recent call last):
  File "/usr/local/bin/ant-downloader", line 9, in 
    load_entry_point('python-ant-downloader==12.03.21', 'console_scripts', 'ant-downloader')()
  File "/usr/local/lib/python2.7/dist-packages/antd/main.py", line 73, in downloader
    host = antd.cfg.create_antfs_host()
  File "/usr/local/lib/python2.7/dist-packages/antd/cfg.py", line 112, in create_antfs_host
    host = antfs.Host(create_ant_session(), keys)
  File "/usr/local/lib/python2.7/dist-packages/antd/cfg.py", line 99, in create_ant_session
    session = ant.Session(create_ant_core())
  File "/usr/local/lib/python2.7/dist-packages/antd/cfg.py", line 95, in create_ant_core
    return ant.Core(create_hardware())
  File "/usr/local/lib/python2.7/dist-packages/antd/cfg.py", line 91, in create_hardware
    return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
  File "/usr/local/lib/python2.7/dist-packages/antd/hw.py", line 59, in __init__
    raise IOError(errno.ENOENT, "No availbile device matching vid(0x%04x) pid(0x%04x)." % (id_vendor, id_product))
IOError: [Errno 2] No availbile device matching vid(0x0fcf) pid(0x1004).

Missing MapMyRun upload plugin

I'm working on the fellow project to provide cross-platform support for Schwinn 810, Mio Quest, Soleus, and all other watches based on NEWCO platform.

I thought it might be useful for your project to be able to upload TCX to mapmyrun and probably other sites in that network. I failed to find google group so I'm creating it is an (enhancement) issue.

https://github.com/mlt/schwinn810/blob/master/src/web/mmf.py

I blatantly copy'n'pasted your plugins' code for this uploader to look alike so it is easier for you to adjust as you will. I used requests/urllib3 instead of other web libraries.

Cheers!

config file in home dir '~/.antd/antd.cfg' bombs...

I want to use the Garmin Connect upload feature and I want my login credentials in my own home directory.

When I locate my config file in my '~/.antd/' directory antd.py bombs with the following output...

Traceback (most recent call last):
File "/usr/local/bin/antd.py", line 42, in
import antd
File "/usr/local/bin/antd.py", line 47, in
help="use provided configuration, defaults: %s" % ", ".join(antd.cfg.DEFAULT_CONFIG_LOCATIONS))
AttributeError: 'module' object has no attribute 'cfg'

Support for garmin vivofit

Hello,
I'm really happy finding this repository, although I'm strugling to run it with garmin vivofit. I've been coding for a while and could contribute with a little show-around this codebase.
I'm also adding a log of a simple run and a try to sync.

$ sudo python ant-downloader.py 
[sudo] password for shookees: 
[MainThread]    2014-06-19 21:01:58,495 WARNING Failed to find Garmin nRF24AP2 (newer) USB Stick.
Traceback (most recent call last):
  File "/home/shookees/Documents/src/python-ant-downloader/antd/cfg.py", line 92, in create_hardware
    return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
  File "/home/shookees/Documents/src/python-ant-downloader/antd/hw.py", line 61, in __init__
    raise NoUsbHardwareFound(errno.ENOENT, "No available device matching vid(0x%04x) pid(0x%04x)." % (id_vendor, id_product))
NoUsbHardwareFound: [Errno 2] No available device matching vid(0x0fcf) pid(0x1008).
[MainThread]    2014-06-19 21:01:58,495 WARNING Looking for nRF24AP1 (older) Serial USB Stick.
[MainThread]    2014-06-19 21:01:59,502 INFO    Searching for ANT devices.
[MainThread]    2014-06-19 21:02:04,236 DEBUG   Got ANT-FS Beacon. device_number=0xd8a6 Beacon{'auth_type': 0, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 3, 'descriptor': 67373, 'upload_enabled': 16, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 51}
[MainThread]    2014-06-19 21:02:04,236 INFO    Device has data. Linking.
[MainThread]    2014-06-19 21:02:04,237 DEBUG   Setting period to match device, hz=4
[MainThread]    2014-06-19 21:02:04,503 DEBUG   Linking with device. freq=2420mhz
[MainThread]    2014-06-19 21:02:05,770 WARNING Retryable error. 9 try(s) remaining. Send message was not acknowledged by peer. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=6)
[MainThread]    2014-06-19 21:02:06,255 INFO    Pairing with device.
[MainThread]    2014-06-19 21:02:06,534 DEBUG   Got client auth string. Auth{'auth_string': 'v\xc3\xadvofit\x00\x00\x00\x00\x00\x00\x00\x00', 'beacon': <antd.antfs.Beacon object at 0x7f3f3e9579d0>, 'op_id': None, 'response_type': 0, 'client_id': 3883194534, 'host_id': 9168, 'data_page_id': 68, 'command_id': 132}
[MainThread]    2014-06-19 21:02:06,534 DEBUG   Device secret known.
[MainThread]    2014-06-19 21:02:06,762 DEBUG   Device accepted key.
[MainThread]    2014-06-19 21:02:06,877 INFO    Saving raw data to /home/shookees/.antd/0xe774d8a6/raw/20140619-210206.raw.
[MainThread]    2014-06-19 21:02:06,878 DEBUG   A000: executing product request
[Thread-1]  2014-06-19 21:02:08,604 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-06-19 21:02:11,479 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-06-19 21:02:11,979 WARNING Failed to receive RF beacon at expected period. channel_number=0
[MainThread]    2014-06-19 21:02:12,388 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
  File "/home/shookees/Documents/src/python-ant-downloader/antd/main.py", line 98, in downloader
    dev = antd.Device(host)
  File "/home/shookees/Documents/src/python-ant-downloader/antd/garmin.py", line 312, in __init__
    self.init_device_api()
  File "/home/shookees/Documents/src/python-ant-downloader/antd/garmin.py", line 343, in init_device_api
    product_data = self.get_product_data()
  File "/home/shookees/Documents/src/python-ant-downloader/antd/garmin.py", line 318, in get_product_data
    return self.execute(A000())[0]
  File "/home/shookees/Documents/src/python-ant-downloader/antd/garmin.py", line 415, in execute
    pkt = self.stream.read()
  File "/home/shookees/Documents/src/python-ant-downloader/antd/antfs.py", line 409, in read
    direct_reply = GarminSendDirect.unpack(self.channel.read())
  File "/home/shookees/Documents/src/python-ant-downloader/antd/ant.py", line 918, in read
    return self._session._send(ReadData(self.channel_number, ReadData), timeout=timeout).data
  File "/home/shookees/Documents/src/python-ant-downloader/antd/ant.py", line 680, in _send
    raise cmd.error
AntTimeoutError: No reply to command. ReadData(channel_number=0)

import usb.core fails with "No module named core"

Strangely I get this error:

$ git checkout master
$ git pull origin master
$ ./ant-downloader.py
Traceback (most recent call last):
  File "./ant-downloader.py", line 2, in <module>
    from antd.main import downloader
  File "/home/jzacsh/tmp/src/python-ant-downloader/antd/__init__.py", line 35, in <module>
    import antd.hw as hw
  File "/home/jzacsh/tmp/src/python-ant-downloader/antd/hw.py", line 30, in <module>
    import usb.core
ImportError: No module named core

# _(same when I prefix with `PYTHON= ` to ensure its not an env. issue)_

Seems like its probably my fault (bad env.?), but figured I'd put this issue out, until I'm sure (feel free to close this if you have no thoughts on the matter)....

Some more info (previously, I ran sudo apt-get install python-usb for package version 0.4.3-1):

$ python --version
Python 2.7.3

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.10
DISTRIB_CODENAME=quantal
DISTRIB_DESCRIPTION="Ubuntu 12.10"

$ locate usb | grep py
/usr/lib/pyshared/python2.7/usb.so
# ....

Any thoughts on what might be going on?

Unable to find USB

Hello,

I have an odd USB device in th fact that lsusb shows it to be

ID 0fcf:1004 Dynastream Innovations, Inc. ANT2USB

rather than 0fcf:1008

I think this is causing an issue where I get the following

[MainThread] 2014-09-06 14:26:24,122 WARNING Failed to find Garmin nRF24AP2 (newer) USB Stick.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/antd/cfg.py", line 92, in create_hardware
return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
File "/usr/local/lib/python2.7/dist-packages/antd/hw.py", line 61, in init
raise NoUsbHardwareFound(errno.ENOENT, "No available device matching vid(0x%04x) pid(0x%04x)." % (id_vendor, id_product))
NoUsbHardwareFound: [Errno 2] No available device matching vid(0x0fcf) pid(0x1008).

Is there any way the code can be a little more flexible to accommodate my differently named USB stick?

Thanks

FR60 tested/supported?

Hi!

I'm having trouble getting the ANT Stick with my FR60 to run, at first I had to change the Product ID in the config file from 1008 to 1004 because my ANT Stick seems to differ.

Don't know if it's a duplicate with the Ubuntu 12.04 support or if I just have the wrong config file, but currently I'm getting:

~$ ant-downloader
Traceback (most recent call last):
File "/usr/local/bin/ant-downloader", line 9, in
load_entry_point('python-ant-downloader==12.03.25', 'console_scripts', 'ant-downloader')()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/main.py", line 73, in downloader
host = antd.cfg.create_antfs_host()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/cfg.py", line 112, in create_antfs_host
host = antfs.Host(create_ant_session(), keys)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/cfg.py", line 99, in create_ant_session
session = ant.Session(create_ant_core())
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/cfg.py", line 95, in create_ant_core
return ant.Core(create_hardware())
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/cfg.py", line 91, in create_hardware
return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.25-py2.7.egg/antd/hw.py", line 53, in init
except IOError as (err, msg):
ValueError: need more than 1 value to unpack

Can you help? Thank you!

Small wrapper script

I'm not sure how to submit this, but I thought maybe this would help anyone in a similar situation. I wrote up a little script that when called, will call ant-downloader and pop up a notification using Gnome's notify-send depending on the outcome. It covers all the cases that I've encountered playing around with it. I'm sure there is a neater way to do this, but hopefully this is of some use to someone! Thanks braiden for all your work on this. It's a great program!!

#!/bin/bash                                                                  

# Place this file wherever you'd like                                        
LOGFILE=$HOME/transfer_results

# For record keeping                                                         
echo `date` > $LOGFILE

# Call the script                                                            
ant-downloader &>> $LOGFILE

if grep -q "No available device" $LOGFILE
  then notify-send --urgency=critical --hint=int:transient:1 'ant-downloader: USB Stick not detected'
fi

if grep -q "but no data availible for download" $LOGFILE
  then notify-send --hint=int:transient:1 'ant-downloader: No new data for download'
fi

if grep -q "tcx: writing" $LOGFILE
  then notify-send --hint=int:transient:1 'ant-downloader: Successfully downloaded from device'
fi

if grep -q "tcx to Garmin Connect" $LOGFILE
  then notify-send --hint=int:transient:1 'ant-downloader: Data uploaded to Garmin Connect'
fi

exit

EDIT: Changed script to match pull request typo fix

unknown key 'SYSFS{idVendor}' in /etc/udev/rules.d/99-antusb.rules:2

Mar 19 08:40:03 dopplereffekt udevd[684]: unknown key 'SYSFS{idVendor}' in /etc/udev/rules.d/99-antusb.rules:2
Mar 19 08:40:03 dopplereffekt udevd[684]: invalid rule '/etc/udev/rules.d/99-antusb.rules:2'

In newer versions of udev the SYSFS field has changed to ATTR:

SUBSYSTEM=="usb", ATTR{idVendor}=="0fcf", ATTR{idProduct}=="1004", MODE="666"

Incomplete download from 410

The downloader works pretty well in most cases for my Forerunner 410 but sometimes tracks seem to be fetched only partially. This is confirmed from a comparison with the file fetched with original ant+ agent for windows. I report the lines where ant-downloader stops outputting trackpoints (< is the windows .tcx, > the one created by ant-downloader):

1858,1859c1649,1650
< 45.7791441

< 12.2980116

          <LatitudeDegrees>45.7791440841</LatitudeDegrees>
          <LongitudeDegrees>12.2980115656</LongitudeDegrees>

1861,1863c1652,1653
< 44.8386230
< 3338.2348633

< Absent

        <AltitudeMeters>44.8386230469</AltitudeMeters>
        <DistanceMeters>3338.23486328</DistanceMeters>

1868,2149c1658,1659
< 45.7789933
< 12.2981110
<
< 44.8386230
< 3356.7148438
< Absent
<
<
< 2012-04-11T09:44:33Z
<
< 45.7788354
< 12.2981945
<
< 45.3192139
< 3375.4182129
< Absent
<
...

In this case ant-downloaded missed about half the course.The problem occurs about 1 time out of 5. Laps seem to be always good.
I can provide you with the complete raw and tcx files if needed.
Thank you

Unable to upload to Garmin

Hi,

I have just installed OK and the software connects correctly, however is unable to connect to garmin and upload, stating InvalidLogin

I have checked the username and password, even copied and pasted from
antd.cfg and can log into the site OK.

When verbose logging I get the following:

[MainThread] 2014-07-05 18:48:07,269 DEBUG Attempting to reprocess failed files.
[MainThread] 2014-07-05 18:48:07,269 DEBUG Fetching cookies from Garmin Connect.
[MainThread] 2014-07-05 18:48:07,703 DEBUG Posting login credentials to Garmin Connect. username=ladyjennifer
[MainThread] 2014-07-05 18:48:08,449 DEBUG Checking if login was successful.
[MainThread] 2014-07-05 18:48:08,706 WARNING Failed to uplaod to Garmin Connect.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/antd/connect.py", line 78, in data_available
self.login()
File "/usr/local/lib/python2.7/dist-packages/antd/connect.py", line 111, in login
raise InvalidLogin()
InvalidLogin

'ant-downloader --config' does not work

Passing in a custom config file with --config causes ant-downloader to fail.

This is because the 'argparse.FileType' option (see main.py, 'downloader()') returns an open file descriptor, not a file pathname. This causes read() in cfg.py to fail.

Note that cfg.py does its own "is-this-a-readable-file" check, so I believe the easiest fix is as follows, to have '--config' return a simple string:

diff --git a/antd/main.py b/antd/main.py
index 7e19645..cc7898a 100644
--- a/antd/main.py
+++ b/antd/main.py
@@ -42,7 +42,7 @@ def downloader():

 # command line
 parser = argparse.ArgumentParser()
  • parser.add_argument("--config", "-c", nargs=1, metavar="f", type=argparse.FileType('r'),
  • parser.add_argument("--config", "-c", nargs=1, metavar="f",
    help="use provided configuration, defaults to ~/.antd/antd.cfg")
    parser.add_argument("--daemon", "-d", action="store_const", const=True,
    help="run in continuous search mode downloading data from any availible devices, WILL NOT PAIR WITH NEW DEVICES")

Maybe a datatype is unimplemented (Garmin 610 Support)

While downloading from a garmin forerunner 610, I received the following output:

[MainThread] 2012-02-16 23:09:16,510 INFO Searching for ANT devices.
[MainThread] 2012-02-16 23:09:30,769 DEBUG Got ANT-FS Beacon. Beacon{'auth_type': 3, 'pairing_enabled': 0, 'device_state': 0, 'period': 4, 'data_availible': 32, 'descriptor': 66881, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 44}
[MainThread] 2012-02-16 23:09:30,775 INFO Device has data. Linking.
[MainThread] 2012-02-16 23:09:31,021 INFO Pairing with device.
[MainThread] 2012-02-16 23:09:31,404 DEBUG Got client auth string. Auth{'auth_string': 'Forerunner 610', 'beacon': <antd.antfs.Beacon object at 0x1fa0a50>, 'op_id': None, 'response_type': 0, 'client_id': 3834649315, 'host_id': 21256, 'data_page_id': 68, 'command_id': 132}
[MainThread] 2012-02-16 23:09:36,287 DEBUG Device paired. key=e52529a65840b199
[MainThread] 2012-02-16 23:09:36,406 INFO Saving raw data to /home/david/.antd/raw/20120216-230936.raw.
[MainThread] 2012-02-16 23:09:36,406 DEBUG A000: executing product request
[MainThread] 2012-02-16 23:09:39,041 DEBUG init_device_api: product_id=1345, software_version=2.60, description=['Forerunner 610 Software Version 2.60']
[MainThread] 2012-02-16 23:09:39,041 DEBUG init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread] 2012-02-16 23:09:39,042 DEBUG Using link protocol L001.
[MainThread] 2012-02-16 23:09:39,042 DEBUG Using command protocol A010.
[MainThread] 2012-02-16 23:09:39,043 DEBUG Using A302['D311', 'D1018'] for: get_trks
[MainThread] 2012-02-16 23:09:39,043 DEBUG Using A906['D1015'] for: get_laps
[MainThread] 2012-02-16 23:09:39,043 DEBUG Using A1000['D1009'] for: get_runs
[MainThread] 2012-02-16 23:09:39,044 DEBUG A000: executing product request
[MainThread] 2012-02-16 23:09:41,779 DEBUG A1000: executing transfer runs
[MainThread] 2012-02-16 23:09:43,010 DEBUG A906: executing transfer laps
[MainThread] 2012-02-16 23:09:44,292 DEBUG A301: executing transfer tracks
[MainThread] 2012-02-16 23:09:45,523 INFO Closing session.
[Thread-1] 2012-02-16 23:09:45,879 WARNING Failed to receive RF beacon at expected period. channel_number=0
[MainThread] 2012-02-16 23:09:45,925 INFO Excuting plugins.
[MainThread] 2012-02-16 23:09:45,925 INFO TcxPlugin: processing /home/david/.antd/raw/20120216-230936.raw.
[MainThread] 2012-02-16 23:09:45,926 DEBUG A000: executing product request
[MainThread] 2012-02-16 23:09:45,927 DEBUG init_device_api: product_id=1345, software_version=2.60, description=['Forerunner 610 Software Version 2.60']
[MainThread] 2012-02-16 23:09:45,927 DEBUG init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread] 2012-02-16 23:09:45,927 DEBUG Using link protocol L001.
[MainThread] 2012-02-16 23:09:45,927 DEBUG Using command protocol A010.
[MainThread] 2012-02-16 23:09:45,927 DEBUG Using A302['D311', 'D1018'] for: get_trks
[MainThread] 2012-02-16 23:09:45,928 DEBUG Using A906['D1015'] for: get_laps
[MainThread] 2012-02-16 23:09:45,928 DEBUG Using A1000['D1009'] for: get_runs
[MainThread] 2012-02-16 23:09:45,928 DEBUG A1000: executing transfer runs
[MainThread] 2012-02-16 23:09:45,928 DEBUG A906: executing transfer laps
[MainThread] 2012-02-16 23:09:45,929 DEBUG A301: executing transfer tracks
[MainThread] 2012-02-16 23:09:45,929 WARNING Failed to process /home/david/.antd/raw/20120216-230936.raw. Maybe a datatype is unimplemented?
Traceback (most recent call last):
File "/home/david/garmin2/antd/tcx.py", line 62, in data_availible
files = export_tcx(file, self.tcx_output_dir)
File "/home/david/garmin2/antd/tcx.py", line 164, in export_tcx
runs = garmin.extract_runs(device, run_pkts)
File "/home/david/garmin2/antd/garmin.py", line 274, in extract_runs
runs = [r.data for r in runs.by_pid[protocols.link_proto.PID_RUN]]
KeyError: 990

I'm not sure how to attach a file so I put the failed file here:

http://www.kondra.com/ant/20120216-230936.raw

By the way, things seem very nice... seems more reliable than garmin-ant-downloader which fails on the 610 as well.

Missing waypoints

Hi, great and easy application to use. However I have I have a issue, are just sometimes converted to the xml-files (.tcx). This happens both when I try to download new exercises, and also when I have the "force send=yes" on my watch.

I have a Garmin 405CX, is this application suppose to work great with this?

I have low understanding on the different abstractions levels when fetching data from the watch, were could this error occur?
This is somewhat related to the issue #18.

Please query me for any more information if it's possible to fault find this issue, I would be glad if I could help out. Will try to dig deeper in this issue later.

Possible to upload .TCX only?

I have extracted data from some other sites (endomondo,runkeeper etc) and don't currently have a garmin device to hand. Is there a possibility to run the python-ant-downloader in an upload only mode? I had a look through but couldn't see an option to bypass the garmin device connect.

Problems with installation

I'm running a Debian (Crunchbang - Wheezy) system at home and want to download my Garmin 910XT exercises, however, I'm having trouble installing python-ant-downloader.

Everything installs up until I run "sudo easy_install python-ant-downloader" and then get a long error message with the last part being:

File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 638, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 828, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1105, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1094, in run_setup
run_setup(setup_script, args)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 30, in run_setup
lambda: execfile(
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 72, in run
return func()
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 32, in
{'file':setup_script, 'name':'main'}
File "setup.py", line 2, in
ImportError: No module named ez_setup

It appears to be a problem with the easy_install command.

Can anyone help?

Bad interaction with 310XT

So a few thinks I noted.

  1. It would be nice to see that first WARN handled a little better - my Garmin is new so they are clearly still shipping the 'older' serial stick. However this is only a minor issue.
  2. The major issue is that it won't transfer any data. I enabled 'Transfer All' and got the below. I presume only the first request is given the transfer of all data, after which it goes back to saying no data available.
[root@philip-pc philip]# ant-downloader
[MainThread]    2014-04-22 19:33:43,507 WARNING Failed to find Garmin nRF24AP2 (newer) USB Stick.
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/antd/cfg.py", line 92, in create_hardware
    return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
  File "/usr/lib/python2.7/site-packages/antd/hw.py", line 61, in __init__
    raise NoUsbHardwareFound(errno.ENOENT, "No available device matching vid(0x%04x) pid(0x%04x)." % (id_vendor, id_product))
NoUsbHardwareFound: [Errno 2] No available device matching vid(0x0fcf) pid(0x1008).
[MainThread]    2014-04-22 19:33:43,507 WARNING Looking for nRF24AP1 (older) Serial USB Stick.
[MainThread]    2014-04-22 19:33:44,517 INFO    Searching for ANT devices.
[MainThread]    2014-04-22 19:33:57,704 DEBUG   Got ANT-FS Beacon. device_number=0x103e Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 4, 'descriptor': 66982, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 44}
[MainThread]    2014-04-22 19:33:57,704 INFO    Device has data. Linking.
[MainThread]    2014-04-22 19:33:57,704 DEBUG   Setting period to match device, hz=8
[MainThread]    2014-04-22 19:33:57,822 DEBUG   Linking with device. freq=2415mhz
[MainThread]    2014-04-22 19:33:58,058 INFO    Pairing with device.
[Thread-1]  2014-04-22 19:33:58,350 WARNING Burst transfer failed, discarding data. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=4)
[MainThread]    2014-04-22 19:34:03,286 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/antd/main.py", line 90, in downloader
    client_id = host.auth(pair=not args.daemon)
  File "/usr/lib/python2.7/site-packages/antd/antfs.py", line 362, in auth
    auth_reply = Auth.unpack(self.channel.read())
  File "/usr/lib/python2.7/site-packages/antd/ant.py", line 918, in read
    return self._session._send(ReadData(self.channel_number, ReadData), timeout=timeout).data
  File "/usr/lib/python2.7/site-packages/antd/ant.py", line 680, in _send
    raise cmd.error
AntTimeoutError: No reply to command. ReadData(channel_number=0)
[MainThread]    2014-04-22 19:34:03,287 INFO    Searching for ANT devices.
[MainThread]    2014-04-22 19:34:08,424 DEBUG   Got ANT-FS Beacon. device_number=0x103e Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 4, 'descriptor': 66982, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 44}
[MainThread]    2014-04-22 19:34:08,425 INFO    Device has data. Linking.
[MainThread]    2014-04-22 19:34:08,425 DEBUG   Setting period to match device, hz=8
[MainThread]    2014-04-22 19:34:08,542 DEBUG   Linking with device. freq=2407mhz
[Thread-1]  2014-04-22 19:34:08,657 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:08,782 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:08,907 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,032 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,157 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,282 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,407 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,532 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,657 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,782 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:09,907 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:10,032 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:10,157 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:10,282 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:10,407 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1]  2014-04-22 19:34:10,532 WARNING Channel dropped to search do to too many dropped messages. channel_number=0
[MainThread]    2014-04-22 19:34:11,544 WARNING Retryable error. 9 try(s) remaining. Send message was not acknowledged by peer. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=6)
[MainThread]    2014-04-22 19:34:17,545 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/antd/main.py", line 88, in downloader
    host.link()
  File "/usr/lib/python2.7/site-packages/antd/antfs.py", line 335, in link
    self.channel.send_acknowledged(link.pack())
  File "/usr/lib/python2.7/site-packages/antd/ant.py", line 882, in send_acknowledged
    self._session._send(cmd, timeout=timeout, retry=retry)
  File "/usr/lib/python2.7/site-packages/antd/ant.py", line 680, in _send
    raise cmd.error
AntTimeoutError: No reply to command. SEND_ACKNOWLEDGED_DATA(channel_number=0, data='D\x02\x07\x047(\x00\x00')
[MainThread]    2014-04-22 19:34:17,545 INFO    Searching for ANT devices.
[MainThread]    2014-04-22 19:34:26,681 DEBUG   Got ANT-FS Beacon. device_number=0x103e Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 4, 'descriptor': 66982, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 44}
[MainThread]    2014-04-22 19:34:26,681 INFO    Device has data. Linking.
[MainThread]    2014-04-22 19:34:26,681 DEBUG   Setting period to match device, hz=8
[MainThread]    2014-04-22 19:34:26,797 DEBUG   Linking with device. freq=2429mhz
[MainThread]    2014-04-22 19:34:27,082 INFO    Pairing with device.
[MainThread]    2014-04-22 19:34:27,310 DEBUG   Got client auth string. Auth{'auth_string': 'Forerunner 310XT', 'beacon': <antd.antfs.Beacon object at 0x1be6750>, 'op_id': None, 'response_type': 0, 'client_id': 3875541054, 'host_id': 10295, 'data_page_id': 68, 'command_id': 132}
[MainThread]    2014-04-22 19:34:27,310 DEBUG   Device secret known.
[MainThread]    2014-04-22 19:34:27,588 DEBUG   Device accepted key.
[MainThread]    2014-04-22 19:34:27,702 INFO    Saving raw data to /root/.antd/0xe700103e/raw/20140422-193427.raw.
[MainThread]    2014-04-22 19:34:27,703 DEBUG   A000: executing product request
[MainThread]    2014-04-22 19:34:29,803 DEBUG   init_device_api: product_id=1446, software_version=4.50, description=['Forerunner 310XT Software Version 4.50', 'VERBMAP ', 'VERSMAP ']
[MainThread]    2014-04-22 19:34:29,803 DEBUG   init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread]    2014-04-22 19:34:29,803 DEBUG   Using link protocol L001.
[MainThread]    2014-04-22 19:34:29,803 DEBUG   Using command protocol A010.
[MainThread]    2014-04-22 19:34:29,803 DEBUG   Using A302['D311', 'D1018'] for: get_trks
[MainThread]    2014-04-22 19:34:29,804 DEBUG   Using A906['D1015'] for: get_laps
[MainThread]    2014-04-22 19:34:29,804 DEBUG   Using A1000['D1009'] for: get_runs
[MainThread]    2014-04-22 19:34:29,804 DEBUG   A000: executing product request
[MainThread]    2014-04-22 19:34:31,952 DEBUG   A1000: executing transfer runs
[MainThread]    2014-04-22 19:34:33,067 DEBUG   A906: executing transfer laps
[MainThread]    2014-04-22 19:34:34,181 DEBUG   A301: executing transfer tracks
[MainThread]    2014-04-22 19:34:35,311 INFO    Closing session.
[MainThread]    2014-04-22 19:34:35,589 INFO    Excuting plugins.
[MainThread]    2014-04-22 19:34:35,589 INFO    TcxPlugin: processing /root/.antd/0xe700103e/raw/20140422-193427.raw.
[MainThread]    2014-04-22 19:34:35,589 DEBUG   A000: executing product request
[MainThread]    2014-04-22 19:34:35,590 DEBUG   init_device_api: product_id=1446, software_version=4.50, description=['Forerunner 310XT Software Version 4.50', 'VERBMAP ', 'VERSMAP ']
[MainThread]    2014-04-22 19:34:35,590 DEBUG   init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread]    2014-04-22 19:34:35,590 DEBUG   Using link protocol L001.
[MainThread]    2014-04-22 19:34:35,590 DEBUG   Using command protocol A010.
[MainThread]    2014-04-22 19:34:35,590 DEBUG   Using A302['D311', 'D1018'] for: get_trks
[MainThread]    2014-04-22 19:34:35,591 DEBUG   Using A906['D1015'] for: get_laps
[MainThread]    2014-04-22 19:34:35,591 DEBUG   Using A1000['D1009'] for: get_runs
[MainThread]    2014-04-22 19:34:35,591 DEBUG   A1000: executing transfer runs
[MainThread]    2014-04-22 19:34:35,591 DEBUG   A906: executing transfer laps
[MainThread]    2014-04-22 19:34:35,591 DEBUG   A301: executing transfer tracks
[MainThread]    2014-04-22 19:34:35,591 DEBUG   extract_runs: found 0 run(s)
[root@philip-pc philip]# 

I then tried again, starting the downloader in verbose mode then enabling transfer all. I got the following:

[MainThread]    2014-04-22 19:43:36,679 INFO    Saving raw data to /root/.antd/0xe700103e/raw/20140422-194336.raw.
[MainThread]    2014-04-22 19:43:36,679 DEBUG   A000: executing product request
[MainThread]    2014-04-22 19:43:36,679 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2014-04-22 19:43:36,680 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2014-04-22 19:43:36,680 DEBUG   SEND: a40950a0fe00000000000000a3
[Thread-1]  2014-04-22 19:43:36,793 DEBUG   RECV: a4094e00432c02039e2800003b
[Thread-1]  2014-04-22 19:43:36,793 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C,\x02\x03\x9e(\x00\x00')
[Thread-1]  2014-04-22 19:43:36,794 DEBUG   RECV: a4034000010aec
[Thread-1]  2014-04-22 19:43:36,794 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2014-04-22 19:43:36,799 DEBUG   RECV: a40340000105e3
[Thread-1]  2014-04-22 19:43:36,799 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2014-04-22 19:43:36,844 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2014-04-22 19:43:36,844 DEBUG   SEND: a4024d0052b9
[Thread-1]  2014-04-22 19:43:36,846 DEBUG   RECV: a402520003f7
[Thread-1]  2014-04-22 19:43:36,846 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[MainThread]    2014-04-22 19:43:36,848 DEBUG   SEND: a4094f004403000000000000a5
[MainThread]    2014-04-22 19:43:36,848 DEBUG   Executing Command. RESET_SYSTEM()
[MainThread]    2014-04-22 19:43:36,848 DEBUG   SEND: a4014a00ef
[Thread-1]  2014-04-22 19:43:36,850 DEBUG   RECV: a4016f20ea
[Thread-1]  2014-04-22 19:43:36,850 DEBUG   Processing reply. STARTUP_MESSAGE(startup_message=32)
Traceback (most recent call last):
  File "/usr/bin/ant-downloader", line 9, in <module>
    load_entry_point('python-ant-downloader==13.02.24', 'console_scripts', 'ant-downloader')()
  File "/usr/lib/python2.7/site-packages/antd/main.py", line 98, in downloader
    dev = antd.Device(host)
  File "/usr/lib/python2.7/site-packages/antd/garmin.py", line 312, in __init__
    self.init_device_api()
  File "/usr/lib/python2.7/site-packages/antd/garmin.py", line 351, in init_device_api
    raise DeviceNotSupportedError("Product data not returned by device.")
antd.garmin.DeviceNotSupportedError: Product data not returned by device.

Forerunner 310XT supported?

Hi braiden,

let me start by thanking you for your work! As of now, your program seems to be the furthest along Garmin-ANT support.
However, I have had no success downloading from a Forerunner 310XT. Pairing works fine and is needed only once, but every run always ends with "extract_runs: found 0 run(s)", even if there definitely is new data.

Here's a verbose log of a typical run:

[MainThread]    2012-03-05 15:45:36,697 DEBUG   Executing Command. RESET_SYSTEM()
[MainThread]    2012-03-05 15:45:36,698 DEBUG   SEND: a4014a00ef
[MainThread]    2012-03-05 15:45:37,217 WARNING Retryable error. 5 try(s) remaining. No reply to command. RESET_SYSTEM()
[MainThread]    2012-03-05 15:45:37,217 DEBUG   SEND: a4014a00ef
[Thread-1]  2012-03-05 15:45:37,218 DEBUG   RECV: a4016f20ea
[Thread-1]  2012-03-05 15:45:37,218 DEBUG   Processing reply. STARTUP_MESSAGE(startup_message=32)
[MainThread]    2012-03-05 15:45:37,222 DEBUG   Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=84)
[MainThread]    2012-03-05 15:45:37,223 DEBUG   SEND: a4024d0054bf
[Thread-1]  2012-03-05 15:45:37,224 DEBUG   RECV: a40654080300ba360071
[Thread-1]  2012-03-05 15:45:37,224 DEBUG   Processing reply. CAPABILITIES(max_channels=8, max_networks=3, standard_opts=0, advanced_opts1=186, advanced_opts2=54)
[MainThread]    2012-03-05 15:45:37,225 DEBUG   Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=62)
[MainThread]    2012-03-05 15:45:37,225 DEBUG   SEND: a4024d003ed5
[Thread-1]  2012-03-05 15:45:37,230 DEBUG   RECV: a40b3e414a4b312e3034524146009f
[Thread-1]  2012-03-05 15:45:37,230 DEBUG   Processing reply. VERSION(ant_version='AJK1.04RAF\x00')
[MainThread]    2012-03-05 15:45:37,230 DEBUG   Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=97)
[MainThread]    2012-03-05 15:45:37,231 DEBUG   SEND: a4024d00618a
[Thread-1]  2012-03-05 15:45:37,234 DEBUG   RECV: a40461d7f62500c5
[Thread-1]  2012-03-05 15:45:37,234 DEBUG   Processing reply. SERIAL_NUMBER(serial_number=2488023)
[MainThread]    2012-03-05 15:45:37,237 DEBUG   Device Capabilities: CAPABILITIES(max_channels=8, max_networks=3, standard_opts=0, advanced_opts1=186, advanced_opts2=54)
[MainThread]    2012-03-05 15:45:37,237 DEBUG   Device ANT Version: VERSION(ant_version='AJK1.04RAF\x00')
[MainThread]    2012-03-05 15:45:37,237 DEBUG   Device SN#: SERIAL_NUMBER(serial_number=2488023)
[MainThread]    2012-03-05 15:45:37,238 INFO    Searching for ANT devices.
[MainThread]    2012-03-05 15:45:37,238 DEBUG   Executing Command. RESET_SYSTEM()
[MainThread]    2012-03-05 15:45:37,238 DEBUG   SEND: a4014a00ef
[Thread-1]  2012-03-05 15:45:37,239 DEBUG   RECV: a4016f20ea
[Thread-1]  2012-03-05 15:45:37,240 DEBUG   Processing reply. STARTUP_MESSAGE(startup_message=32)
[MainThread]    2012-03-05 15:45:37,242 DEBUG   Executing Command. SET_NETWORK_KEY(network_number=0, network_key='\xa8\xa4#\xb9\xf5^c\xc1')
[MainThread]    2012-03-05 15:45:37,243 DEBUG   SEND: a4094600a8a423b9f55e63c174
[Thread-1]  2012-03-05 15:45:37,244 DEBUG   RECV: a40340004600a1
[Thread-1]  2012-03-05 15:45:37,244 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=70, msg_code=0)
[MainThread]    2012-03-05 15:45:37,247 DEBUG   Executing Command. ASSIGN_CHANNEL(channel_number=0, channel_type=0, network_number=0)
[MainThread]    2012-03-05 15:45:37,247 DEBUG   SEND: a40342000000e5
[Thread-1]  2012-03-05 15:45:37,248 DEBUG   RECV: a40340004200a5
[Thread-1]  2012-03-05 15:45:37,248 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=66, msg_code=0)
[MainThread]    2012-03-05 15:45:37,251 DEBUG   Executing Command. SET_CHANNEL_ID(channel_number=0, device_number=0, device_type_id=0, trans_type=0)
[MainThread]    2012-03-05 15:45:37,251 DEBUG   SEND: a405510000000000f0
[Thread-1]  2012-03-05 15:45:37,252 DEBUG   RECV: a40340005100b6
[Thread-1]  2012-03-05 15:45:37,253 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=81, msg_code=0)
[MainThread]    2012-03-05 15:45:37,255 DEBUG   Executing Command. SET_CHANNEL_PERIOD(channel_number=0, messaging_period=4096)
[MainThread]    2012-03-05 15:45:37,256 DEBUG   SEND: a40343000010f4
[Thread-1]  2012-03-05 15:45:37,257 DEBUG   RECV: a40340004300a4
[Thread-1]  2012-03-05 15:45:37,257 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=67, msg_code=0)
[MainThread]    2012-03-05 15:45:37,259 DEBUG   Executing Command. SET_CHANNEL_SEARCH_TIMEOUT(channel_number=0, search_timeout=255)
[MainThread]    2012-03-05 15:45:37,260 DEBUG   SEND: a4024400ff1d
[Thread-1]  2012-03-05 15:45:37,261 DEBUG   RECV: a40340004400a3
[Thread-1]  2012-03-05 15:45:37,261 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=68, msg_code=0)
[MainThread]    2012-03-05 15:45:37,264 DEBUG   Executing Command. SET_CHANNEL_RF_FREQ(channel_number=0, rf_freq=50)
[MainThread]    2012-03-05 15:45:37,264 DEBUG   SEND: a402450032d1
[Thread-1]  2012-03-05 15:45:37,265 DEBUG   RECV: a40340004500a2
[Thread-1]  2012-03-05 15:45:37,265 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=69, msg_code=0)
[MainThread]    2012-03-05 15:45:37,268 DEBUG   Executing Command. SET_SEARCH_WAVEFORM(channel_number=0, waveform=83)
[MainThread]    2012-03-05 15:45:37,268 DEBUG   SEND: a40349005300bd
[Thread-1]  2012-03-05 15:45:37,269 DEBUG   RECV: a40340004900ae
[Thread-1]  2012-03-05 15:45:37,270 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=73, msg_code=0)
[MainThread]    2012-03-05 15:45:37,273 DEBUG   Executing Command. OPEN_CHANNEL(channel_number=0)
[MainThread]    2012-03-05 15:45:37,273 DEBUG   SEND: a4014b00ee
[Thread-1]  2012-03-05 15:45:37,274 DEBUG   RECV: a40340004b00ac
[Thread-1]  2012-03-05 15:45:37,274 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=75, msg_code=0)
[MainThread]    2012-03-05 15:45:37,277 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:37,277 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:37,278 DEBUG   RECV: a402520002f6
[Thread-1]  2012-03-05 15:45:37,279 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=2)
[Thread-1]  2012-03-05 15:45:51,574 DEBUG   RECV: a4094e0043240003fa0301007f
[Thread-1]  2012-03-05 15:45:51,575 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x00\x03\xfa\x03\x01\x00')
[MainThread]    2012-03-05 15:45:51,595 DEBUG   Executing Command. REQUEST_MESSAGE(channel_number=0, msg_id=81)
[MainThread]    2012-03-05 15:45:51,595 DEBUG   SEND: a4024d0051ba
[Thread-1]  2012-03-05 15:45:51,596 DEBUG   RECV: a40551006e2b0105b1
[Thread-1]  2012-03-05 15:45:51,597 DEBUG   Processing reply. CHANNEL_ID(channel_number=0, device_number=11118, device_type_id=1, man_id=5)
[MainThread]    2012-03-05 15:45:51,599 DEBUG   Got ANT-FS Beacon. device_number=0x2b6e Beacon{'auth_type': 3, 'pairing_enabled': 0, 'device_state': 0, 'period': 4, 'data_availible': 32, 'descriptor': 66554, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 36}
[MainThread]    2012-03-05 15:45:51,599 INFO    Device has data. Linking.
[MainThread]    2012-03-05 15:45:51,600 DEBUG   Setting period to match device, hz=8
[MainThread]    2012-03-05 15:45:51,600 DEBUG   Executing Command. SET_CHANNEL_PERIOD(channel_number=0, messaging_period=4096)
[MainThread]    2012-03-05 15:45:51,600 DEBUG   SEND: a40343000010f4
[Thread-1]  2012-03-05 15:45:51,601 DEBUG   RECV: a40340004300a4
[Thread-1]  2012-03-05 15:45:51,601 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=67, msg_code=0)
[MainThread]    2012-03-05 15:45:51,604 DEBUG   Linking with device. freq=2454mhz
[MainThread]    2012-03-05 15:45:51,604 DEBUG   Executing Command. SEND_ACKNOWLEDGED_DATA(channel_number=0, data='D\x026\x04\xc0\x0f\x00\x00')
[MainThread]    2012-03-05 15:45:51,605 DEBUG   SEND: a4094f0044023604c00f000059
[Thread-1]  2012-03-05 15:45:51,698 DEBUG   RECV: a4094e0043240003fa0301007f
[Thread-1]  2012-03-05 15:45:51,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x00\x03\xfa\x03\x01\x00')
[Thread-1]  2012-03-05 15:45:51,702 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:51,702 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:51,719 DEBUG   Executing Command. SET_CHANNEL_RF_FREQ(channel_number=0, rf_freq=54)
[MainThread]    2012-03-05 15:45:51,720 DEBUG   SEND: a402450036d5
[Thread-1]  2012-03-05 15:45:51,721 DEBUG   RECV: a40340004500a2
[Thread-1]  2012-03-05 15:45:51,721 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=69, msg_code=0)
[MainThread]    2012-03-05 15:45:51,724 DEBUG   Executing Command. SET_CHANNEL_SEARCH_TIMEOUT(channel_number=0, search_timeout=2)
[MainThread]    2012-03-05 15:45:51,724 DEBUG   SEND: a402440002e0
[Thread-1]  2012-03-05 15:45:51,725 DEBUG   RECV: a40340004400a3
[Thread-1]  2012-03-05 15:45:51,725 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=68, msg_code=0)
[MainThread]    2012-03-05 15:45:51,728 DEBUG   Executing Command. SET_CHANNEL_PERIOD(channel_number=0, messaging_period=4096)
[MainThread]    2012-03-05 15:45:51,728 DEBUG   SEND: a40343000010f4
[Thread-1]  2012-03-05 15:45:51,729 DEBUG   RECV: a40340004300a4
[Thread-1]  2012-03-05 15:45:51,730 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=67, msg_code=0)
[MainThread]    2012-03-05 15:45:51,732 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:51,733 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:51,734 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:51,734 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:51,823 DEBUG   RECV: a4094e0043240103c00f000049
[Thread-1]  2012-03-05 15:45:51,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x01\x03\xc0\x0f\x00\x00')
[MainThread]    2012-03-05 15:45:51,849 INFO    Pairing with device.
[MainThread]    2012-03-05 15:45:51,849 DEBUG   Executing Command. SEND_ACKNOWLEDGED_DATA(channel_number=0, data='D\x04\x01\x00\xc0\x0f\x00\x00')
[MainThread]    2012-03-05 15:45:51,850 DEBUG   SEND: a4094f0044040100c00f00006c
[Thread-1]  2012-03-05 15:45:51,948 DEBUG   RECV: a4094e0043240103c00f000049
[Thread-1]  2012-03-05 15:45:51,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x01\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:51,952 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:51,952 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:51,965 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:51,965 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:51,966 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:51,966 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:52,073 DEBUG   RECV: a409500043240103c00f000057
[Thread-1]  2012-03-05 15:45:52,074 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x01\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,077 DEBUG   RECV: a4095020448400106e2bd6e47a
[Thread-1]  2012-03-05 15:45:52,077 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x84\x00\x10n+\xd6\xe4')
[Thread-1]  2012-03-05 15:45:52,080 DEBUG   RECV: a4095040466f726572756e6e84
[Thread-1]  2012-03-05 15:45:52,080 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='Forerunn')
[Thread-1]  2012-03-05 15:45:52,086 DEBUG   RECV: a40950e0657220333130585414
[Thread-1]  2012-03-05 15:45:52,087 DEBUG   Burst transfer completed, marking 4 packets availible for read.
[Thread-1]  2012-03-05 15:45:52,087 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=224, data='er 310XT')
[MainThread]    2012-03-05 15:45:52,133 DEBUG   Got client auth string. Auth{'auth_string': 'Forerunner 310XT', 'beacon': <antd.antfs.Beacon object at 0x1ab0f90>, 'op_id': None, 'response_type': 0, 'client_id': 3839241070, 'host_id': 4032, 'data_page_id': 68, 'command_id': 132}
[MainThread]    2012-03-05 15:45:52,133 DEBUG   Device secret known.
[MainThread]    2012-03-05 15:45:52,133 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:52,134 DEBUG   SEND: a409500044040308c00f000079
[MainThread]    2012-03-05 15:45:52,135 DEBUG   SEND: a40950a068146fa6d571f79922
[Thread-1]  2012-03-05 15:45:52,198 DEBUG   RECV: a4094e0043240103c00f000049
[Thread-1]  2012-03-05 15:45:52,199 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x01\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,202 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:52,202 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:52,205 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:52,205 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:52,252 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:52,252 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:52,253 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:52,253 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:52,323 DEBUG   RECV: a409500043240103c00f000057
[Thread-1]  2012-03-05 15:45:52,324 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x01\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,330 DEBUG   RECV: a40950a044840100000000009c
[Thread-1]  2012-03-05 15:45:52,330 DEBUG   Burst transfer completed, marking 2 packets availible for read.
[Thread-1]  2012-03-05 15:45:52,330 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='D\x84\x01\x00\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:52,369 DEBUG   Device accepted key.
[MainThread]    2012-03-05 15:45:52,369 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:52,369 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:52,370 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:52,370 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:52,448 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:52,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[MainThread]    2012-03-05 15:45:52,486 INFO    Saving raw data to /root/.antd/0xe4d62b6e/raw/20120305-154552.raw.
[MainThread]    2012-03-05 15:45:52,486 DEBUG   A000: executing product request
[MainThread]    2012-03-05 15:45:52,486 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:52,487 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:52,488 DEBUG   SEND: a40950a0fe00000000000000a3
[Thread-1]  2012-03-05 15:45:52,573 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:52,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,577 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:52,578 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:52,581 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:52,581 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:52,602 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:52,603 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:52,604 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:52,604 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:52,698 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:52,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,823 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:52,824 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,827 DEBUG   RECV: a4095020448dffff000009001d
[Thread-1]  2012-03-05 15:45:52,827 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x8d\xff\xff\x00\x00\t\x00')
[Thread-1]  2012-03-05 15:45:52,830 DEBUG   RECV: a4095040ff003d00fa03a40123
[Thread-1]  2012-03-05 15:45:52,831 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\xff\x00=\x00\xfa\x03\xa4\x01')
[Thread-1]  2012-03-05 15:45:52,833 DEBUG   RECV: a4095060466f726572756e6ea4
[Thread-1]  2012-03-05 15:45:52,833 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='Forerunn')
[Thread-1]  2012-03-05 15:45:52,836 DEBUG   RECV: a40950206572203331305854d4
[Thread-1]  2012-03-05 15:45:52,837 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='er 310XT')
[Thread-1]  2012-03-05 15:45:52,839 DEBUG   RECV: a409504020536f6674776172d7
[Thread-1]  2012-03-05 15:45:52,840 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data=' Softwar')
[Thread-1]  2012-03-05 15:45:52,843 DEBUG   RECV: a4095060652056657273696fec
[Thread-1]  2012-03-05 15:45:52,843 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='e Versio')
[Thread-1]  2012-03-05 15:45:52,846 DEBUG   RECV: a40950206e20342e32300056dd
[Thread-1]  2012-03-05 15:45:52,846 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='n 4.20\x00V')
[Thread-1]  2012-03-05 15:45:52,849 DEBUG   RECV: a40950404552424d4150200094
[Thread-1]  2012-03-05 15:45:52,849 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='ERBMAP \x00')
[Thread-1]  2012-03-05 15:45:52,852 DEBUG   RECV: a4095060564552534d415020f3
[Thread-1]  2012-03-05 15:45:52,852 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='VERSMAP ')
[Thread-1]  2012-03-05 15:45:52,858 DEBUG   RECV: a40950a000000000000000005d
[Thread-1]  2012-03-05 15:45:52,858 DEBUG   Burst transfer completed, marking 11 packets availible for read.
[Thread-1]  2012-03-05 15:45:52,859 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='\x00\x00\x00\x00\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:52,870 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:52,870 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:52,871 DEBUG   SEND: a40950a006000200ff000000a6
[Thread-1]  2012-03-05 15:45:52,948 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:52,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:52,952 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:52,952 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:52,955 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:52,955 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:52,986 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:52,986 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:52,987 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:52,987 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:53,073 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:53,074 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:53,198 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:53,199 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:53,202 DEBUG   RECV: a4095020448dffff0000050011
[Thread-1]  2012-03-05 15:45:53,202 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x8d\xff\xff\x00\x00\x05\x00')
[Thread-1]  2012-03-05 15:45:53,206 DEBUG   RECV: a4095040f80021004750532000
[Thread-1]  2012-03-05 15:45:53,206 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\xf8\x00!\x00GPS ')
[Thread-1]  2012-03-05 15:45:53,209 DEBUG   RECV: a4095060475343334c54205392
[Thread-1]  2012-03-05 15:45:53,209 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='GSC3LT S')
[Thread-1]  2012-03-05 15:45:53,212 DEBUG   RECV: a40950206f6674776172652081
[Thread-1]  2012-03-05 15:45:53,212 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='oftware ')
[Thread-1]  2012-03-05 15:45:53,215 DEBUG   RECV: a409504056657273696f6e20c7
[Thread-1]  2012-03-05 15:45:53,215 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='Version ')
[Thread-1]  2012-03-05 15:45:53,221 DEBUG   RECV: a40950e0322e31300000000000
[Thread-1]  2012-03-05 15:45:53,221 DEBUG   Burst transfer completed, marking 7 packets availible for read.
[Thread-1]  2012-03-05 15:45:53,221 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=224, data='2.10\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:53,256 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:53,256 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:53,257 DEBUG   SEND: a40950a006000200f8000000a1
[Thread-1]  2012-03-05 15:45:53,323 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:53,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:53,327 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:53,327 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:53,330 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:53,330 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:53,372 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:53,372 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:53,373 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:53,373 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:53,448 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:53,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:53,573 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:53,574 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:53,577 DEBUG   RECV: a4095020448dffff0000170003
[Thread-1]  2012-03-05 15:45:53,577 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x8d\xff\xff\x00\x00\x17\x00')
[Thread-1]  2012-03-05 15:45:53,580 DEBUG   RECV: a4095040fd00b1005000004ced
[Thread-1]  2012-03-05 15:45:53,581 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\xfd\x00\xb1\x00P\x00\x00L')
[Thread-1]  2012-03-05 15:45:53,583 DEBUG   RECV: a40950600100410a0041870312
[Thread-1]  2012-03-05 15:45:53,584 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\x01\x00A\n\x00A\x87\x03')
[Thread-1]  2012-03-05 15:45:53,586 DEBUG   RECV: a409502041960344960341f76e
[Thread-1]  2012-03-05 15:45:53,587 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='A\x96\x03D\x96\x03A\xf7')
[Thread-1]  2012-03-05 15:45:53,589 DEBUG   RECV: a409504003540100416400448a
[Thread-1]  2012-03-05 15:45:53,590 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03T\x01\x00Ad\x00D')
[Thread-1]  2012-03-05 15:45:53,593 DEBUG   RECV: a40950606e0041c90044ca00f5
[Thread-1]  2012-03-05 15:45:53,593 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='n\x00A\xc9\x00D\xca\x00')
[Thread-1]  2012-03-05 15:45:53,597 DEBUG   RECV: a4095020446e0044d200412e0e
[Thread-1]  2012-03-05 15:45:53,597 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='Dn\x00D\xd2\x00A.')
[Thread-1]  2012-03-05 15:45:53,600 DEBUG   RECV: a40950400144370144fa034132
[Thread-1]  2012-03-05 15:45:53,600 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x01D7\x01D\xfa\x03A')
[Thread-1]  2012-03-05 15:45:53,603 DEBUG   RECV: a4095060f40144f501415802c3
[Thread-1]  2012-03-05 15:45:53,603 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\xf4\x01D\xf5\x01AX\x02')
[Thread-1]  2012-03-05 15:45:53,606 DEBUG   RECV: a40950204458024159024459c4
[Thread-1]  2012-03-05 15:45:53,606 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='DX\x02AY\x02DY')
[Thread-1]  2012-03-05 15:45:53,609 DEBUG   RECV: a40950400241bc0244bc0241fb
[Thread-1]  2012-03-05 15:45:53,609 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x02A\xbc\x02D\xbc\x02A')
[Thread-1]  2012-03-05 15:45:53,612 DEBUG   RECV: a40950602003442003412103ba
[Thread-1]  2012-03-05 15:45:53,612 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data=' \x03D \x03A!\x03')
[Thread-1]  2012-03-05 15:45:53,614 DEBUG   RECV: a4095020442103418603418bb5
[Thread-1]  2012-03-05 15:45:53,614 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D!\x03A\x86\x03A\x8b')
[Thread-1]  2012-03-05 15:45:53,617 DEBUG   RECV: a409504003448b03448c0344fd
[Thread-1]  2012-03-05 15:45:53,617 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03D\x8b\x03D\x8c\x03D')
[Thread-1]  2012-03-05 15:45:53,620 DEBUG   RECV: a40950608d03448e03418a0312
[Thread-1]  2012-03-05 15:45:53,621 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\x8d\x03D\x8e\x03A\x8a\x03')
[Thread-1]  2012-03-05 15:45:53,624 DEBUG   RECV: a409502044f70341e80344f172
[Thread-1]  2012-03-05 15:45:53,624 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\xf7\x03A\xe8\x03D\xf1')
[Thread-1]  2012-03-05 15:45:53,627 DEBUG   RECV: a40950400341f90344f00341f3
[Thread-1]  2012-03-05 15:45:53,627 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03A\xf9\x03D\xf0\x03A')
[Thread-1]  2012-03-05 15:45:53,630 DEBUG   RECV: a4095060eb0344eb0341f80363
[Thread-1]  2012-03-05 15:45:53,630 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\xeb\x03D\xeb\x03A\xf8\x03')
[Thread-1]  2012-03-05 15:45:53,633 DEBUG   RECV: a409502044f80341ed0344ed64
[Thread-1]  2012-03-05 15:45:53,633 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\xf8\x03A\xed\x03D\xed')
[Thread-1]  2012-03-05 15:45:53,636 DEBUG   RECV: a40950400341fa0344ee0341ee
[Thread-1]  2012-03-05 15:45:53,636 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03A\xfa\x03D\xee\x03A')
[Thread-1]  2012-03-05 15:45:53,639 DEBUG   RECV: a4095060ef0344ef0341f0036b
[Thread-1]  2012-03-05 15:45:53,639 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\xef\x03D\xef\x03A\xf0\x03')
[Thread-1]  2012-03-05 15:45:53,642 DEBUG   RECV: a409502044f40341f10344f56c
[Thread-1]  2012-03-05 15:45:53,642 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\xf4\x03A\xf1\x03D\xf5')
[Thread-1]  2012-03-05 15:45:53,645 DEBUG   RECV: a40950400341f50344f60341f9
[Thread-1]  2012-03-05 15:45:53,646 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03A\xf5\x03D\xf6\x03A')
[Thread-1]  2012-03-05 15:45:53,652 DEBUG   RECV: a40950e0f60344f90300000056
[Thread-1]  2012-03-05 15:45:53,652 DEBUG   Burst transfer completed, marking 25 packets availible for read.
[Thread-1]  2012-03-05 15:45:53,652 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=224, data='\xf6\x03D\xf9\x03\x00\x00\x00')
[MainThread]    2012-03-05 15:45:53,690 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:53,690 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:53,691 DEBUG   SEND: a40950a006000200fd000000a4
[Thread-1]  2012-03-05 15:45:53,698 DEBUG   RECV: a4094e00f60344f903000000a8
[Thread-1]  2012-03-05 15:45:53,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='\xf6\x03D\xf9\x03\x00\x00\x00')
[Thread-1]  2012-03-05 15:45:53,702 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:53,702 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:53,705 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:53,705 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:53,710 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:53,710 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:53,711 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:53,711 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:53,823 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:53,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:53,948 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:53,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,073 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:54,074 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,198 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:54,199 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,323 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:54,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,448 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:54,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,573 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:54,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,698 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:54,699 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,705 DEBUG   RECV: a40950a0448dffff0000000094
[Thread-1]  2012-03-05 15:45:54,705 DEBUG   Burst transfer completed, marking 2 packets availible for read.
[Thread-1]  2012-03-05 15:45:54,705 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='D\x8d\xff\xff\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:54,711 DEBUG   init_device_api: product_id=1018, software_version=4.20, description=['Forerunner 310XT Software Version 4.20', 'VERBMAP ', 'VERSMAP ']
[MainThread]    2012-03-05 15:45:54,711 DEBUG   init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread]    2012-03-05 15:45:54,712 DEBUG   Using link protocol L001.
[MainThread]    2012-03-05 15:45:54,712 DEBUG   Using command protocol A010.
[MainThread]    2012-03-05 15:45:54,712 DEBUG   Using A302['D311', 'D1018'] for: get_trks
[MainThread]    2012-03-05 15:45:54,712 DEBUG   Using A906['D1015'] for: get_laps
[MainThread]    2012-03-05 15:45:54,712 DEBUG   Using A1000['D1009'] for: get_runs
[MainThread]    2012-03-05 15:45:54,712 DEBUG   A000: executing product request
[MainThread]    2012-03-05 15:45:54,713 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:54,713 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:54,714 DEBUG   SEND: a40950a0fe00000000000000a3
[Thread-1]  2012-03-05 15:45:54,823 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:54,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:54,827 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:54,827 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:54,830 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:54,830 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:54,880 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:54,880 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:54,881 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:54,882 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:54,948 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:54,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,073 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:55,074 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,077 DEBUG   RECV: a4095020448dffff000009001d
[Thread-1]  2012-03-05 15:45:55,077 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x8d\xff\xff\x00\x00\t\x00')
[Thread-1]  2012-03-05 15:45:55,081 DEBUG   RECV: a4095040ff003d00fa03a40123
[Thread-1]  2012-03-05 15:45:55,081 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\xff\x00=\x00\xfa\x03\xa4\x01')
[Thread-1]  2012-03-05 15:45:55,083 DEBUG   RECV: a4095060466f726572756e6ea4
[Thread-1]  2012-03-05 15:45:55,084 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='Forerunn')
[Thread-1]  2012-03-05 15:45:55,087 DEBUG   RECV: a40950206572203331305854d4
[Thread-1]  2012-03-05 15:45:55,087 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='er 310XT')
[Thread-1]  2012-03-05 15:45:55,090 DEBUG   RECV: a409504020536f6674776172d7
[Thread-1]  2012-03-05 15:45:55,090 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data=' Softwar')
[Thread-1]  2012-03-05 15:45:55,093 DEBUG   RECV: a4095060652056657273696fec
[Thread-1]  2012-03-05 15:45:55,093 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='e Versio')
[Thread-1]  2012-03-05 15:45:55,096 DEBUG   RECV: a40950206e20342e32300056dd
[Thread-1]  2012-03-05 15:45:55,096 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='n 4.20\x00V')
[Thread-1]  2012-03-05 15:45:55,099 DEBUG   RECV: a40950404552424d4150200094
[Thread-1]  2012-03-05 15:45:55,099 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='ERBMAP \x00')
[Thread-1]  2012-03-05 15:45:55,102 DEBUG   RECV: a4095060564552534d415020f3
[Thread-1]  2012-03-05 15:45:55,102 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='VERSMAP ')
[Thread-1]  2012-03-05 15:45:55,108 DEBUG   RECV: a40950a000000000000000005d
[Thread-1]  2012-03-05 15:45:55,108 DEBUG   Burst transfer completed, marking 11 packets availible for read.
[Thread-1]  2012-03-05 15:45:55,108 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='\x00\x00\x00\x00\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:55,149 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:55,149 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:55,150 DEBUG   SEND: a40950a006000200ff000000a6
[Thread-1]  2012-03-05 15:45:55,198 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:55,199 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,201 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:55,202 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:55,205 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:55,205 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:55,215 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:55,215 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:55,216 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:55,216 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:55,323 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:55,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,448 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:55,449 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,452 DEBUG   RECV: a4095020448dffff0000050011
[Thread-1]  2012-03-05 15:45:55,452 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x8d\xff\xff\x00\x00\x05\x00')
[Thread-1]  2012-03-05 15:45:55,455 DEBUG   RECV: a4095040f80021004750532000
[Thread-1]  2012-03-05 15:45:55,456 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\xf8\x00!\x00GPS ')
[Thread-1]  2012-03-05 15:45:55,458 DEBUG   RECV: a4095060475343334c54205392
[Thread-1]  2012-03-05 15:45:55,459 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='GSC3LT S')
[Thread-1]  2012-03-05 15:45:55,462 DEBUG   RECV: a40950206f6674776172652081
[Thread-1]  2012-03-05 15:45:55,462 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='oftware ')
[Thread-1]  2012-03-05 15:45:55,465 DEBUG   RECV: a409504056657273696f6e20c7
[Thread-1]  2012-03-05 15:45:55,465 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='Version ')
[Thread-1]  2012-03-05 15:45:55,471 DEBUG   RECV: a40950e0322e31300000000000
[Thread-1]  2012-03-05 15:45:55,471 DEBUG   Burst transfer completed, marking 7 packets availible for read.
[Thread-1]  2012-03-05 15:45:55,471 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=224, data='2.10\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:55,482 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:55,482 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:55,483 DEBUG   SEND: a40950a006000200f8000000a1
[Thread-1]  2012-03-05 15:45:55,573 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:55,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,577 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:55,577 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:55,580 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:55,580 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:55,598 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:55,598 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:55,599 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:55,600 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:55,698 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:55,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,823 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:55,824 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,827 DEBUG   RECV: a4095020448dffff0000170003
[Thread-1]  2012-03-05 15:45:55,827 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\x8d\xff\xff\x00\x00\x17\x00')
[Thread-1]  2012-03-05 15:45:55,830 DEBUG   RECV: a4095040fd00b1005000004ced
[Thread-1]  2012-03-05 15:45:55,831 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\xfd\x00\xb1\x00P\x00\x00L')
[Thread-1]  2012-03-05 15:45:55,833 DEBUG   RECV: a40950600100410a0041870312
[Thread-1]  2012-03-05 15:45:55,833 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\x01\x00A\n\x00A\x87\x03')
[Thread-1]  2012-03-05 15:45:55,836 DEBUG   RECV: a409502041960344960341f76e
[Thread-1]  2012-03-05 15:45:55,836 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='A\x96\x03D\x96\x03A\xf7')
[Thread-1]  2012-03-05 15:45:55,839 DEBUG   RECV: a409504003540100416400448a
[Thread-1]  2012-03-05 15:45:55,840 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03T\x01\x00Ad\x00D')
[Thread-1]  2012-03-05 15:45:55,843 DEBUG   RECV: a40950606e0041c90044ca00f5
[Thread-1]  2012-03-05 15:45:55,843 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='n\x00A\xc9\x00D\xca\x00')
[Thread-1]  2012-03-05 15:45:55,846 DEBUG   RECV: a4095020446e0044d200412e0e
[Thread-1]  2012-03-05 15:45:55,846 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='Dn\x00D\xd2\x00A.')
[Thread-1]  2012-03-05 15:45:55,849 DEBUG   RECV: a40950400144370144fa034132
[Thread-1]  2012-03-05 15:45:55,849 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x01D7\x01D\xfa\x03A')
[Thread-1]  2012-03-05 15:45:55,852 DEBUG   RECV: a4095060f40144f501415802c3
[Thread-1]  2012-03-05 15:45:55,852 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\xf4\x01D\xf5\x01AX\x02')
[Thread-1]  2012-03-05 15:45:55,855 DEBUG   RECV: a40950204458024159024459c4
[Thread-1]  2012-03-05 15:45:55,855 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='DX\x02AY\x02DY')
[Thread-1]  2012-03-05 15:45:55,858 DEBUG   RECV: a40950400241bc0244bc0241fb
[Thread-1]  2012-03-05 15:45:55,858 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x02A\xbc\x02D\xbc\x02A')
[Thread-1]  2012-03-05 15:45:55,861 DEBUG   RECV: a40950602003442003412103ba
[Thread-1]  2012-03-05 15:45:55,861 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data=' \x03D \x03A!\x03')
[Thread-1]  2012-03-05 15:45:55,864 DEBUG   RECV: a4095020442103418603418bb5
[Thread-1]  2012-03-05 15:45:55,864 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D!\x03A\x86\x03A\x8b')
[Thread-1]  2012-03-05 15:45:55,868 DEBUG   RECV: a409504003448b03448c0344fd
[Thread-1]  2012-03-05 15:45:55,868 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03D\x8b\x03D\x8c\x03D')
[Thread-1]  2012-03-05 15:45:55,871 DEBUG   RECV: a40950608d03448e03418a0312
[Thread-1]  2012-03-05 15:45:55,871 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\x8d\x03D\x8e\x03A\x8a\x03')
[Thread-1]  2012-03-05 15:45:55,874 DEBUG   RECV: a409502044f70341e80344f172
[Thread-1]  2012-03-05 15:45:55,874 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\xf7\x03A\xe8\x03D\xf1')
[Thread-1]  2012-03-05 15:45:55,877 DEBUG   RECV: a40950400341f90344f00341f3
[Thread-1]  2012-03-05 15:45:55,877 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03A\xf9\x03D\xf0\x03A')
[Thread-1]  2012-03-05 15:45:55,880 DEBUG   RECV: a4095060eb0344eb0341f80363
[Thread-1]  2012-03-05 15:45:55,880 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\xeb\x03D\xeb\x03A\xf8\x03')
[Thread-1]  2012-03-05 15:45:55,883 DEBUG   RECV: a409502044f80341ed0344ed64
[Thread-1]  2012-03-05 15:45:55,883 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\xf8\x03A\xed\x03D\xed')
[Thread-1]  2012-03-05 15:45:55,886 DEBUG   RECV: a40950400341fa0344ee0341ee
[Thread-1]  2012-03-05 15:45:55,886 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03A\xfa\x03D\xee\x03A')
[Thread-1]  2012-03-05 15:45:55,889 DEBUG   RECV: a4095060ef0344ef0341f0036b
[Thread-1]  2012-03-05 15:45:55,889 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=96, data='\xef\x03D\xef\x03A\xf0\x03')
[Thread-1]  2012-03-05 15:45:55,892 DEBUG   RECV: a409502044f40341f10344f56c
[Thread-1]  2012-03-05 15:45:55,892 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=32, data='D\xf4\x03A\xf1\x03D\xf5')
[Thread-1]  2012-03-05 15:45:55,896 DEBUG   RECV: a40950400341f50344f60341f9
[Thread-1]  2012-03-05 15:45:55,897 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=64, data='\x03A\xf5\x03D\xf6\x03A')
[Thread-1]  2012-03-05 15:45:55,901 DEBUG   RECV: a40950e0f60344f90300000056
[Thread-1]  2012-03-05 15:45:55,902 DEBUG   Burst transfer completed, marking 25 packets availible for read.
[Thread-1]  2012-03-05 15:45:55,902 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=224, data='\xf6\x03D\xf9\x03\x00\x00\x00')
[MainThread]    2012-03-05 15:45:55,918 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:55,918 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:55,919 DEBUG   SEND: a40950a006000200fd000000a4
[Thread-1]  2012-03-05 15:45:55,948 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:55,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:55,951 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:55,952 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:55,955 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:55,955 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:55,983 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:55,984 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:55,985 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:55,985 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:56,073 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,074 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,198 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,199 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,323 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,448 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,573 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,698 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,823 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:56,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,948 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:56,949 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:56,955 DEBUG   RECV: a40950a0448dffff0000000094
[Thread-1]  2012-03-05 15:45:56,955 DEBUG   Burst transfer completed, marking 2 packets availible for read.
[Thread-1]  2012-03-05 15:45:56,955 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='D\x8d\xff\xff\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:56,985 DEBUG   A1000: executing transfer runs
[MainThread]    2012-03-05 15:45:56,985 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:56,985 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:56,986 DEBUG   SEND: a40950a00a000200c201000096
[Thread-1]  2012-03-05 15:45:57,073 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:57,074 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,076 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:57,077 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:57,079 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:57,080 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:57,101 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:57,101 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:57,102 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:57,102 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:57,198 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,199 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,323 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,448 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,573 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,698 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,823 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:57,948 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:57,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,073 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:58,074 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,080 DEBUG   RECV: a40950a0448dffff0000000094
[Thread-1]  2012-03-05 15:45:58,080 DEBUG   Burst transfer completed, marking 2 packets availible for read.
[Thread-1]  2012-03-05 15:45:58,080 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='D\x8d\xff\xff\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:58,102 DEBUG   A906: executing transfer laps
[MainThread]    2012-03-05 15:45:58,102 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:58,102 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:58,103 DEBUG   SEND: a40950a00a0002007500000020
[Thread-1]  2012-03-05 15:45:58,198 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:58,199 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,202 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:58,202 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:58,205 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:58,205 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:58,218 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:58,218 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:58,219 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:58,220 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:58,323 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:58,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,448 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:58,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,573 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:58,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,698 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:58,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,823 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:58,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:58,948 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:58,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,073 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:59,074 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,198 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:45:59,199 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,205 DEBUG   RECV: a40950a0448dffff0000000094
[Thread-1]  2012-03-05 15:45:59,205 DEBUG   Burst transfer completed, marking 2 packets availible for read.
[Thread-1]  2012-03-05 15:45:59,205 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='D\x8d\xff\xff\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:45:59,219 DEBUG   A301: executing transfer tracks
[MainThread]    2012-03-05 15:45:59,220 DEBUG   Executing Command. SEND_BURST_COMMAND(channel_number=0)
[MainThread]    2012-03-05 15:45:59,220 DEBUG   SEND: a4095000440dffff00000000b4
[MainThread]    2012-03-05 15:45:59,221 DEBUG   SEND: a40950a00a0002000600000053
[Thread-1]  2012-03-05 15:45:59,323 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:45:59,324 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,326 DEBUG   RECV: a4034000010aec
[Thread-1]  2012-03-05 15:45:59,327 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=10)
[Thread-1]  2012-03-05 15:45:59,330 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:45:59,330 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[MainThread]    2012-03-05 15:45:59,336 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:45:59,336 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:45:59,337 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:45:59,337 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:45:59,448 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:59,449 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,573 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:59,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,698 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:59,699 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,823 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:59,824 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:45:59,948 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:45:59,949 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:46:00,073 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:46:00,073 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:46:00,198 DEBUG   RECV: a4094e0043240303c00f00004b
[Thread-1]  2012-03-05 15:46:00,198 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:46:00,323 DEBUG   RECV: a409500043240303c00f000055
[Thread-1]  2012-03-05 15:46:00,324 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=0, data='C$\x03\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:46:00,330 DEBUG   RECV: a40950a0448dffff0000000094
[Thread-1]  2012-03-05 15:46:00,330 DEBUG   Burst transfer completed, marking 2 packets availible for read.
[Thread-1]  2012-03-05 15:46:00,330 DEBUG   Processing reply. RECV_BURST_TRANSFER_PACKET(channel_number=160, data='D\x8d\xff\xff\x00\x00\x00\x00')
[MainThread]    2012-03-05 15:46:00,337 INFO    Closing session.
[MainThread]    2012-03-05 15:46:00,337 DEBUG   Executing Command. ReadData(channel_number=0)
[MainThread]    2012-03-05 15:46:00,337 DEBUG   SEND: a4024d0052b9
[Thread-1]  2012-03-05 15:46:00,338 DEBUG   RECV: a402520003f7
[Thread-1]  2012-03-05 15:46:00,339 DEBUG   Processing reply. CHANNEL_STATUS(channel_number=0, channel_status=3)
[Thread-1]  2012-03-05 15:46:00,448 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:46:00,448 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[MainThread]    2012-03-05 15:46:00,454 DEBUG   SEND: a4094f004403000000000000a5
[MainThread]    2012-03-05 15:46:00,455 DEBUG   Executing Command. CLOSE_CHANNEL(channel_number=0)
[MainThread]    2012-03-05 15:46:00,456 DEBUG   SEND: a4014c00e9
[Thread-1]  2012-03-05 15:46:00,457 DEBUG   RECV: a40340004c00ab
[Thread-1]  2012-03-05 15:46:00,457 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=76, msg_code=0)
[Thread-1]  2012-03-05 15:46:00,573 DEBUG   RECV: a4094e0043240203c00f00004a
[Thread-1]  2012-03-05 15:46:00,574 DEBUG   Processing reply. RECV_BROADCAST_DATA(channel_number=0, data='C$\x02\x03\xc0\x0f\x00\x00')
[Thread-1]  2012-03-05 15:46:00,576 DEBUG   RECV: a40340000105e3
[Thread-1]  2012-03-05 15:46:00,577 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=5)
[Thread-1]  2012-03-05 15:46:00,579 DEBUG   RECV: a40340000107e1
[Thread-1]  2012-03-05 15:46:00,580 DEBUG   Processing reply. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=7)
[MainThread]    2012-03-05 15:46:00,622 INFO    Excuting plugins.
[MainThread]    2012-03-05 15:46:00,622 INFO    TcxPlugin: processing /root/.antd/0xe4d62b6e/raw/20120305-154552.raw.
[MainThread]    2012-03-05 15:46:00,623 DEBUG   A000: executing product request
[MainThread]    2012-03-05 15:46:00,623 DEBUG   init_device_api: product_id=1018, software_version=4.20, description=['Forerunner 310XT Software Version 4.20', 'VERBMAP ', 'VERSMAP ']
[MainThread]    2012-03-05 15:46:00,623 DEBUG   init_device_api: protocol_array=['P000', 'L001', 'A010', 'A903', 'A918', 'D918', 'A1015', 'T001', 'A100', 'D110', 'A201', 'D202', 'D110', 'D210', 'A302', 'D311', 'D1018', 'A500', 'D501', 'A600', 'D600', 'A601', 'D601', 'A700', 'D700', 'A800', 'D800', 'A801', 'D801', 'A902', 'A907', 'D907', 'D908', 'D909', 'D910', 'A906', 'D1015', 'A1000', 'D1009', 'A1017', 'D1008', 'A1003', 'D1003', 'A1016', 'D1016', 'A1005', 'D1005', 'A1018', 'D1006', 'A1007', 'D1007', 'A1008', 'D1012', 'A1009', 'D1013', 'A1013', 'D1014', 'A1014', 'D1017']
[MainThread]    2012-03-05 15:46:00,624 DEBUG   Using link protocol L001.
[MainThread]    2012-03-05 15:46:00,624 DEBUG   Using command protocol A010.
[MainThread]    2012-03-05 15:46:00,624 DEBUG   Using A302['D311', 'D1018'] for: get_trks
[MainThread]    2012-03-05 15:46:00,624 DEBUG   Using A906['D1015'] for: get_laps
[MainThread]    2012-03-05 15:46:00,624 DEBUG   Using A1000['D1009'] for: get_runs
[MainThread]    2012-03-05 15:46:00,624 DEBUG   A1000: executing transfer runs
[MainThread]    2012-03-05 15:46:00,624 DEBUG   A906: executing transfer laps
[MainThread]    2012-03-05 15:46:00,625 DEBUG   A301: executing transfer tracks
[MainThread]    2012-03-05 15:46:00,625 DEBUG   extract_runs: found 0 run(s)
[MainThread]    2012-03-05 15:46:00,625 DEBUG   SEND: a4094f004403000000000000a5
[MainThread]    2012-03-05 15:46:00,626 DEBUG   Executing Command. RESET_SYSTEM()
[MainThread]    2012-03-05 15:46:00,626 DEBUG   SEND: a4014a00ef
[Thread-1]  2012-03-05 15:46:00,628 DEBUG   RECV: a4016f20ea
[Thread-1]  2012-03-05 15:46:00,628 DEBUG   Processing reply. STARTUP_MESSAGE(startup_message=32)

I'm aware that you probably don't own this device, but I hope you'll find the time to have a look at this. I'm investigating Garmin-Forerunner-610-Extractor at the same time, but your program is much more polished right now.

Thanks in advance,
Jochen

The corresponding raw file is small, here's the hexdump:

00000000  ff 00 3d 00 fa 03 a4 01  46 6f 72 65 72 75 6e 6e  |..=.....Forerunn|
00000010  65 72 20 33 31 30 58 54  20 53 6f 66 74 77 61 72  |er 310XT Softwar|
00000020  65 20 56 65 72 73 69 6f  6e 20 34 2e 32 30 00 56  |e Version 4.20.V|
00000030  45 52 42 4d 41 50 20 00  56 45 52 53 4d 41 50 20  |ERBMAP .VERSMAP |
00000040  00 f8 00 21 00 47 50 53  20 47 53 43 33 4c 54 20  |...!.GPS GSC3LT |
00000050  53 6f 66 74 77 61 72 65  20 56 65 72 73 69 6f 6e  |Software Version|
00000060  20 32 2e 31 30 00 fd 00  b1 00 50 00 00 4c 01 00  | 2.10.....P..L..|
00000070  41 0a 00 41 87 03 41 96  03 44 96 03 41 f7 03 54  |A..A..A..D..A..T|
00000080  01 00 41 64 00 44 6e 00  41 c9 00 44 ca 00 44 6e  |..Ad.Dn.A..D..Dn|
00000090  00 44 d2 00 41 2e 

How to clear data from device after download?

Braiden,
Thank you so much for your wonderful work! I have been searching for a Ubuntu/Linux solution ever since I got my Garmin Forerunner 405CX. I use a Dell D420 Laptop running Ubuntu Lucid Linux 10.04.
Everything seems to be working marvelously--the .tcx files are transferred via the ANT stick wirelessly to the folder I assigned them in the antd.cfg file, my data automatically uploads to the Garmin connect website on transfer, etc.
Is there a way to get the data to automatically clear from my watch once it has been transferred to my computer?
Alan

Forerunner 910XT don't get runs

Hi,

first off, thx for keeping up this project and making sure runner and Linux users can make use of the latest Garmin devices.
I finally decided to go for an 910XT after having used the FR305 together with gpsbabel a lot ... but I need better battery life ;)

So but still stuck for the moment, I have seen the post that 910xt runs should be able to download from the device, so far I could not get this to work :(

I do get a raw data file saved but it is the same even if I add runs. After that no tcx can be extracted (probably nothing gets into the raw file)....

The end of the output message looks like this:
the complete file with an hexdump view of the raw data file can be viewed here: http://exitzero.de/910xt.html

please let me know if you have any idea or on how I can get this to work ... if you need further/more debug data let me know as well. I'm not really a python programmer but I might take a look at the code as well, but fear that I have currently not enough knowledge about the garmin protocol to do any real debug by myself....

andreas

[MainThread] 2012-03-30 23:41:17,948 DEBUG Using link protocol L001.
[MainThread] 2012-03-30 23:41:17,949 DEBUG Using command protocol A010.
[MainThread] 2012-03-30 23:41:17,949 DEBUG Using A302['D311', 'D1018'] for: get_trks
[MainThread] 2012-03-30 23:41:17,950 DEBUG Using A906['D1015'] for: get_laps
[MainThread] 2012-03-30 23:41:17,951 DEBUG Using A1000['D1009'] for: get_runs
[MainThread] 2012-03-30 23:41:17,951 DEBUG A1000: executing transfer runs
[MainThread] 2012-03-30 23:41:17,951 DEBUG A906: executing transfer laps
[MainThread] 2012-03-30 23:41:17,952 DEBUG A301: executing transfer tracks
[MainThread] 2012-03-30 23:41:17,952 DEBUG extract_runs: found 0 run(s)
[MainThread] 2012-03-30 23:41:17,953 DEBUG SEND: a4094f004403000000000000a5
[MainThread] 2012-03-30 23:41:17,956 DEBUG Executing Command. RESET_SYSTEM()
[MainThread] 2012-03-30 23:41:17,956 DEBUG SEND: a4014a00ef
[Thread-1] 2012-03-30 23:41:17,959 DEBUG RECV: a4016f20ea
[Thread-1] 2012-03-30 23:41:17,960 DEBUG Processing reply. STARTUP_MESSAGE(startup_message=32)

Device ID reports incorrectly

I just noticed that in files that I upload to Garmin Connect via python-and-downlader report my device as 'Garmin Connect API, 12.2.7.7 '. It should report as 'Garmin Forerunner 410, 2.20.0.0'. I presume the numbers at the end are the firmware version.

I believe the device ID has implications in Garmin Connect as to whether altitude correction is automatically set or not (i.e. devices with or without internal barometers).

Update pip package?

Hi.
I see you merged my pull request, could you maybe update the pip package?
Thanks

usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

Hi braiden,

I recently updated to 12.04 x64 and am attempting to reinstall this package. Everything goes fine when I install ez_setup and then python-ant-downloader via pip.

Now, regardless of whether I install the package with or without the "--user" option in pip, I receive the following error when I run ant-downloader:

josh@josh-ThinkPad:~/.local/bin$ ant-downloader 
Traceback (most recent call last):
  File "/home/josh/.local/bin/ant-downloader", line 8, in <module>
    load_entry_point('python-ant-downloader==12.03.21', 'console_scripts', 'ant-downloader')()
  File "/home/josh/.local/lib/python2.7/site-packages/antd/main.py", line 73, in downloader
    host = antd.cfg.create_antfs_host()
  File "/home/josh/.local/lib/python2.7/site-packages/antd/cfg.py", line 112, in create_antfs_host
    host = antfs.Host(create_ant_session(), keys)
  File "/home/josh/.local/lib/python2.7/site-packages/antd/cfg.py", line 99, in create_ant_session
    session = ant.Session(create_ant_core())
  File "/home/josh/.local/lib/python2.7/site-packages/antd/cfg.py", line 95, in create_ant_core
    return ant.Core(create_hardware())
  File "/home/josh/.local/lib/python2.7/site-packages/antd/cfg.py", line 91, in create_hardware
    return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
  File "/home/josh/.local/lib/python2.7/site-packages/antd/hw.py", line 48, in __init__
    dev.set_configuration()
  File "build/bdist.linux-x86_64/egg/usb/core.py", line 547, in set_configuration
  File "build/bdist.linux-x86_64/egg/usb/core.py", line 91, in managed_set_configuration
  File "build/bdist.linux-x86_64/egg/usb/core.py", line 70, in managed_open
  File "build/bdist.linux-x86_64/egg/usb/backend/libusb10.py", line 494, in open_device
  File "build/bdist.linux-x86_64/egg/usb/backend/libusb10.py", line 403, in _check
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

I can run the program as root, but obviously this is something I would rather not do. The problem seems to be more localized to libusb1.0, but if you had any ideas, I would really appreciate it. Thanks!

/dev/ttyUSB0: No such file or directory

Many thanks for your work on this. When I try the command I get this error message.

hbarta@cypress:/test$ garmin-ant-downloader -f nameofyourwatchid -a nameofauthentificationfile
/dev/ttyUSB0: No such file or directory
ERROR: Open dev 0 failed in line 1384.
hbarta@cypress:
/test$ garmin-ant-downloader -f nameofyourwatchid -a nameofauthentificationfile -d 13
/dev/ttyUSB13: No such file or directory
ERROR: Open dev 13 failed in line 1384.
hbarta@cypress:~/test$

I see the following in /var/log/syslog when the ANT stick is plugged in:

Jan 21 08:37:35 cypress kernel: [161290.168157] usb 6-1: new full-speed USB device number 13 using uhci_hcd
Jan 21 08:37:36 cypress mtp-probe: checking bus 6, device 13: "/sys/devices/pci0000:00/0000:00:1d.0/usb6/6-1"
Jan 21 08:37:36 cypress mtp-probe: bus: 6, device: 13 was not an MTP device

Every time the stick is removed and plugged in, the device number is incremented.

This is on Linux Mint 13 (Maya) and running the kernel:
Linux cypress 3.2.0-35-generic #55-Ubuntu SMP Wed Dec 5 17:42:16 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

I appreciate suggestions on where to look for help or what to try.

Edit: The version of the package file seems to be '20110626-1'

thanks,
hank

Implementation of Event type

Hi Braiden,

Thanks again for all your work on this great program. I use it almost every day (or, I should at least!)

I was wondering if you knew anything about how to upload a specific "Event type" (training, race, etc.) when uploading the .tcx files to Garmin Connect. I was thinking the easiest way to do this would be to interject some appropriate block of code into the .tcx file before uploading it, but I've looked through the .tcx schema and haven't seen anything related to a field of "event type". I'm thinking this might be a limitation of the API for Garmin Connect, but since you have more experience with this, I thought I would ask.

A functionality like this would be really useful and could be implemented as a CLI option when calling ant-downloader.

Any thoughts?

Thanks,
Josh

Download one small raw file

ant-downloader seems to connect to my 410xt (which pairs), and initiate a download. However, the download appears empty.

One file is downloaded to .antd/.../raw/ It's 278 bytes big, and has the current date and time. If I redo the process, I get another 278 byte file.

raw2tcx does nothing with the file.

The 410xt does have some history. How do I get it off?

Cannot connect to 410

When I try to connect to my 410 device, I get the following errors:
[MainThread] 2012-05-12 13:32:33,686 WARNING Retryable error. 5 try(s) remaining. No reply to command. RESET_SYSTEM()
[MainThread] 2012-05-12 13:32:33,702 INFO Searching for ANT devices.
[MainThread] 2012-05-12 13:32:57,655 DEBUG Got ANT-FS Beacon. device_number=0xabae Beacon{'auth_type': 3, 'pairing_enabled': 0, 'device_state': 0, 'period': 4, 'data_availible': 32, 'descriptor': 131073, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 36}
[MainThread] 2012-05-12 13:32:57,655 INFO Device has data. Linking.
[MainThread] 2012-05-12 13:32:57,655 DEBUG Setting period to match device, hz=8
[MainThread] 2012-05-12 13:32:57,663 DEBUG Linking with device. freq=2420mhz
[Thread-1] 2012-05-12 13:32:57,860 WARNING Failed to receive RF beacon at expected period. channel_number=0
[MainThread] 2012-05-12 13:32:58,039 INFO Pairing with device.
[MainThread] 2012-05-12 13:32:58,279 DEBUG Got client auth string. Auth{'auth_string': '', 'beacon': <antd.antfs.Beacon object at 0xd5eed0>, 'op_id': None, 'response_type': 1, 'client_id': 3841895342, 'host_id': 2986, 'data_page_id': 68, 'command_id': 132}
[MainThread] 2012-05-12 13:32:58,279 DEBUG Device unkown, requesting pairing.
[Thread-1] 2012-05-12 13:33:00,235 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:00,360 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:00,485 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:00,610 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:00,735 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:00,860 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:00,985 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,110 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,235 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,360 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,485 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,610 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,735 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,860 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:01,985 WARNING Failed to receive RF beacon at expected period. channel_number=0
[Thread-1] 2012-05-12 13:33:02,111 WARNING Channel dropped to search do to too many dropped messages. channel_number=0
[Thread-1] 2012-05-12 13:33:12,001 WARNING RF channel timed out searching for device. channel_number=0
[MainThread] 2012-05-12 13:33:12,024 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
File "/home/dragor/src/python-ant-downloader/antd/main.py", line 89, in downloader
client_id = host.auth(pair=not args.daemon)
File "/home/dragor/src/python-ant-downloader/antd/antfs.py", line 386, in auth
auth_reply = Auth.unpack(self.channel.read(timeout))
File "/home/dragor/src/python-ant-downloader/antd/ant.py", line 883, in read
return self._session._send(ReadData(self.channel_number, ReadData), timeout=timeout).data
File "/home/dragor/src/python-ant-downloader/antd/ant.py", line 645, in _send
raise cmd.error
AntChannelClosedError: Channel closed. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=7)

This just repeats 5 times and the program exits. I've tried this on two different systems and I get the same errors.

install failled on Manjaro

Hi,
Actually I'm trying to switch from JoliOs to Manjaro (arch) and I have an issue with Python-ant-downloader. It was a real pleasure to use it on JoliOs but I need to change distro to be more Linux fluent (no like my english practice :)).

When I try to install with : sudo pip install python-ant-downloader
There is an error on the terminal. Behind, the log messages :

Downloading python_ant_downloader-13.02.24.tar.gz
Running setup.py (path:/tmp/pip_build_root/python-ant-downloader/setup.py) egg_info for package python-ant-downloader

Downloading/unpacking distribute (from python-ant-downloader)
Downloading distribute-0.7.3.zip (145kB): 145kB downloaded
Running setup.py (path:/tmp/pip_build_root/distribute/setup.py) egg_info for package distribute

Downloading/unpacking poster (from python-ant-downloader)
Downloading poster-0.8.1.tar.gz
Running setup.py (path:/tmp/pip_build_root/poster/setup.py) egg_info for package poster
Traceback (most recent call last):
File "", line 17, in
File "/tmp/pip_build_root/poster/setup.py", line 2, in
import poster
File "/tmp/pip_build_root/poster/poster/init.py", line 29, in
import poster.streaminghttp
File "/tmp/pip_build_root/poster/poster/streaminghttp.py", line 61
print "send:", repr(value)
^
SyntaxError: invalid syntax
Complete output from command python setup.py egg_info:
Traceback (most recent call last):

File "", line 17, in

File "/tmp/pip_build_root/poster/setup.py", line 2, in

import poster

File "/tmp/pip_build_root/poster/poster/init.py", line 29, in

import poster.streaminghttp

File "/tmp/pip_build_root/poster/poster/streaminghttp.py", line 61

print "send:", repr(value)

            ^

SyntaxError: invalid syntax


Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_root/poster
Storing debug log for failure in /root/.pip/pip.log

Sorry for my english ;)

Thanks for your help and feedback.

Cedric

Garmin 910xt works, but only for running...

Thank you for your great work! One small issue: with the garmin forerunner 910xt, the download works great except it won't download swims... I take it this is because you don't have the code in place for it yet?

Garmin Swim

Hello, does your tool support Garmin Swim? I have this device and can assist you with your questions if that is convenient for you.

When installed on Ubuntu 12.04.2 using pip:
$ sudo ant-downloader
Seems to initiate download since I can see 'data transfer' note on the watch itself. However, it cannot complete successfully and produces the log below:

[MainThread] 2013-04-08 19:55:54,154 DEBUG Got ANT-FS Beacon. device_number=0x577f Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 4, 'descriptor': 67035, 'upload_enabled': 16, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 60}
[MainThread] 2013-04-08 19:55:54,154 INFO Device has data. Linking.
[MainThread] 2013-04-08 19:55:54,154 DEBUG Setting period to match device, hz=8
[MainThread] 2013-04-08 19:55:54,279 DEBUG Linking with device. freq=2454mhz
[MainThread] 2013-04-08 19:55:54,528 INFO Pairing with device.
[MainThread] 2013-04-08 19:55:54,812 DEBUG Got client auth string. Auth{'auth_string': 'GARMIN SWIM\x00', 'beacon': <antd.antfs.Beacon object at 0x322f6d0>, 'op_id': None, 'response_type': 0, 'client_id': 3858847615, 'host_id': 15407, 'data_page_id': 68, 'command_id': 132}
[MainThread] 2013-04-08 19:55:54,812 DEBUG Device secret known.
[MainThread] 2013-04-08 19:55:55,048 DEBUG Device accepted key.
[MainThread] 2013-04-08 19:55:55,165 INFO Saving raw data to /home/kudret/.antd/0xe601577f/raw/20130408-195555.raw.
[MainThread] 2013-04-08 19:55:55,165 DEBUG A000: executing product request
[MainThread] 2013-04-08 19:56:00,398 WARNING Caught error while communicating with device, will retry.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/antd/main.py", line 98, in downloader
dev = antd.Device(host)
File "/usr/local/lib/python2.7/dist-packages/antd/garmin.py", line 312, in init
self.init_device_api()
File "/usr/local/lib/python2.7/dist-packages/antd/garmin.py", line 343, in init_device_api
product_data = self.get_product_data()
File "/usr/local/lib/python2.7/dist-packages/antd/garmin.py", line 318, in get_product_data
return self.execute(A000())[0]
File "/usr/local/lib/python2.7/dist-packages/antd/garmin.py", line 415, in execute
pkt = self.stream.read()
File "/usr/local/lib/python2.7/dist-packages/antd/antfs.py", line 409, in read
direct_reply = GarminSendDirect.unpack(self.channel.read())
File "/usr/local/lib/python2.7/dist-packages/antd/ant.py", line 918, in read
return self._session._send(ReadData(self.channel_number, ReadData), timeout=timeout).data
File "/usr/local/lib/python2.7/dist-packages/antd/ant.py", line 680, in _send
raise cmd.error
AntTimeoutError: No reply to command. ReadData(channel_number=0)
[MainThread] 2013-04-08 19:56:00,399 INFO Searching for ANT devices.

Thank you,
Kudrettin

Error on first run

W/ ubuntu 12.04. After getting past https://bugs.launchpad.net/ubuntu/+source/distribute/+bug/958550 , run into this on first run.

Traceback (most recent call last):
File "/usr/local/bin/ant-downloader", line 9, in
load_entry_point('python-ant-downloader==12.03.21', 'console_scripts', 'ant-downloader')()
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.21-py2.7.egg/antd/main.py", line 57, in downloader
if not antd.cfg.read(cfg):
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.21-py2.7.egg/antd/cfg.py", line 56, in read
write_default_config(file)
File "/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.21-py2.7.egg/antd/cfg.py", line 49, in write_default_config
file.write(pkg_resources.resource_string(name, "antd.cfg"))
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 916, in resource_string
self, resource_name
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1189, in get_resource_string
return self._get(self._fn(self.module_path, resource_name))
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1316, in _get
stream = open(path, 'rb')
IOError: [Errno 2] No such file or directory: '/usr/local/lib/python2.7/dist-packages/python_ant_downloader-12.03.21-py2.7.egg/antd/antd.cfg'

FR70 support

I just bought a FR70, and would like to get it working in Linux.

Pairing works, but it fails on the "A000: executing product request"

The full log is here: https://gist.github.com/fb16f981d01244b19c9d

I have experience with Python, and I'm willing to spend some time coding and testing.

However, from previous discussions it seems that it might use ANT-FS (if it's anything like the FR60). In that case, should I try to use a different project instead?

Garmin Connect login broken

Hey Braiden,

Looks like Garmin Connect has changed their login authentication. Upload to GC is not working.

This has affected my own GcpUploader project as well.

I've been looking at the new login, but haven't gotten it figured out yet.

ant-downloader fails after upgrade

Trying ant-downloader for the first time. Tried running it after doing install via "sudo pip install python-ant-downloader" on my ubuntu 12.04 system. I was able to download data from the watch, but the upload to garmin connect failed.

After reading tkts 51 and 52, I tried to upgrade to the latest version on github, by doing the following:

  1. git clone git://github.com/braiden/python-ant-downloader.git
  2. sudo ./setup.py build
  3. sudo ./setup.py install

Now when I run ant-downloader I get the following error:
Traceback (most recent call last):
File "/usr/local/bin/ant-downloader", line 9, in
load_entry_point('python-ant-downloader==13.02.24', 'console_scripts', 'ant-downloader')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 337, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2279, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1989, in load
entry = import(self.module_name, globals(),globals(), ['name'])
File "/usr/local/lib/python2.7/dist-packages/antd/init.py", line 39, in
import antd.connect as connect
File "/usr/local/lib/python2.7/dist-packages/antd/connect.py", line 33, in
import requests
ImportError: No module named requests

Any help when be greatly appreciated, thanks!

Marc

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.