braiden / python-ant-downloader Goto Github PK
View Code? Open in Web Editor NEWPython Ant Downloader - tools for download from garmin wireless (ANT) devices
License: BSD 2-Clause "Simplified" License
Python Ant Downloader - tools for download from garmin wireless (ANT) devices
License: BSD 2-Clause "Simplified" License
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!
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.
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.
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)
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.
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?
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 ?
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.
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
This was also reported as
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.
Moved from #11
Hey braiden, not sure if this is related to this particular bug, so feel free to just put this in another issue:
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.
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?
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
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:
.fit
/ .tcx
files to Garmin ConnectBearing these in mind, it seems the following observations are true:
antfs-cli
, which by use of a plugin system will address 1., 2., 3., and 4.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:
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.)
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).
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!
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'
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)
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?
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
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!
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
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"
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
<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
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
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()
IOError isn't a tuple. Most of these are fixed in the ioerror branch, but not in antd.hw
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.
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.
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.
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?
So a few thinks I noted.
[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.
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
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
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)
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).
Hi.
I see you merged my pull request, could you maybe update the pip package?
Thanks
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!
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/test$ garmin-ant-downloader -f nameofyourwatchid -a nameofauthentificationfile -d 13
/dev/ttyUSB0: No such file or directory
ERROR: Open dev 0 failed in line 1384.
hbarta@cypress:
/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
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
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?
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.
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
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?
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
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'
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?
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.
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:
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.