braiden/python-ant-downloader

no .tcx file generated (possibly related to: "Record count mismatch" error?)

mhl opened this issue · 2 comments

mhl commented

python-ant-downloader has generally worked brilliantly for me with my Garmin Forerunner 410, but today it appeared to download data from the device fine, but only a suspiciously small .raw file was created, and no corresponding .tcx file (so then gupload failed). The terminal output was:

[MainThread]	2017-11-26 17:32:07,568	INFO	Found device with vid(0x0fcf) pid(0x1008), but interface already claimed.
[MainThread]	2017-11-26 17:32:07,568	WARNING	Failed to find Garmin nRF24AP2 (newer) USB Stick.
Traceback (most recent call last):
  File "/home/mark/garmin/python-ant-downloader/antd/cfg.py", line 91, in create_hardware
    return hw.UsbHardware(id_vendor, id_product, bulk_endpoint)
  File "/home/mark/garmin/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]	2017-11-26 17:32:07,569	WARNING	Looking for nRF24AP1 (older) Serial USB Stick.
[MainThread]	2017-11-26 17:32:08,575	INFO	Searching for ANT devices.
[MainThread]	2017-11-26 17:32:10,506	DEBUG	Got ANT-FS Beacon. device_number=0xeb79 Beacon{'auth_type': 3, 'pairing_enabled': 0, 'data_available': 32, 'device_state': 0, 'period': 1, 'descriptor': 131073, 'upload_enabled': 0, 'data_page_id': 67, 'data': '', 'status_2': 0, 'status_1': 33}
[MainThread]	2017-11-26 17:32:10,506	INFO	Device has data. Linking.
[MainThread]	2017-11-26 17:32:10,506	DEBUG	Setting period to match device, hz=1
[MainThread]	2017-11-26 17:32:11,509	DEBUG	Linking with device. freq=2440mhz
[Thread-1]	2017-11-26 17:32:13,498	WARNING	Failed to receive RF beacon at expected period. channel_number=0
[MainThread]	2017-11-26 17:32:13,628	INFO	Pairing with device.
[MainThread]	2017-11-26 17:32:13,906	DEBUG	Got client auth string. Auth{'auth_string': 'Forerunner 410', 'beacon': <antd.antfs.Beacon object at 0x7f79cd5d9a50>, 'op_id': None, 'response_type': 1, 'client_id': 3849972601, 'host_id': 30351L, 'data_page_id': 68, 'command_id': 132}
[MainThread]	2017-11-26 17:32:13,906	DEBUG	Device secret known.
[MainThread]	2017-11-26 17:32:14,135	DEBUG	Device accepted key.
[MainThread]	2017-11-26 17:32:14,253	INFO	Saving raw data to /home/mark/.antd/0xe579eb79/raw/20171126-173214.raw.
[MainThread]	2017-11-26 17:32:14,253	DEBUG	A000: executing product request
[MainThread]	2017-11-26 17:32:16,520	DEBUG	init_device_api: product_id=1250, software_version=2.30, description=['Forerunner 410 Software Version 2.30']
[MainThread]	2017-11-26 17:32:16,520	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]	2017-11-26 17:32:16,520	DEBUG	Using link protocol L001.
[MainThread]	2017-11-26 17:32:16,520	DEBUG	Using command protocol A010.
[MainThread]	2017-11-26 17:32:16,521	DEBUG	Using A302['D311', 'D1018'] for: get_trks
[MainThread]	2017-11-26 17:32:16,521	DEBUG	Using A906['D1015'] for: get_laps
[MainThread]	2017-11-26 17:32:16,521	DEBUG	Using A1000['D1009'] for: get_runs
[MainThread]	2017-11-26 17:32:16,521	DEBUG	A000: executing product request
[Thread-1]	2017-11-26 17:32:17,497	WARNING	Failed to receive RF beacon at expected period. channel_number=0
[MainThread]	2017-11-26 17:32:18,885	DEBUG	A1000: executing transfer runs
[MainThread]	2017-11-26 17:32:19,051	DEBUG	A906: executing transfer laps
[MainThread]	2017-11-26 17:32:19,430	INFO	A906: Starting download. 1 record(s)
[MainThread]	2017-11-26 17:32:19,545	INFO	A906: Starting download. 5 record(s)
[MainThread]	2017-11-26 17:32:20,810	INFO	A906: Download in progress. 4/5
[MainThread]	2017-11-26 17:32:21,925	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]	2017-11-26 17:32:22,043	INFO	A906: Download in progress. 5/5
[MainThread]	2017-11-26 17:32:22,550	INFO	A906: Finished download. 6/5
[MainThread]	2017-11-26 17:32:22,550	WARNING	A906: Record count mismatch, expected(5) != actual(6)
[MainThread]	2017-11-26 17:32:23,631	DEBUG	A301: executing transfer tracks
[Thread-1]	2017-11-26 17:32:23,747	WARNING	Failed to receive RF beacon at expected period. channel_number=0
[MainThread]	2017-11-26 17:32:24,160	INFO	A302: Starting download. 227 record(s)
[MainThread]	2017-11-26 17:32:25,522	INFO	A302: Download in progress. 61/227
[MainThread]	2017-11-26 17:32:26,554	INFO	A302: Download in progress. 121/227
[MainThread]	2017-11-26 17:32:28,234	INFO	A302: Download in progress. 227/227
[MainThread]	2017-11-26 17:32:29,267	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]	2017-11-26 17:32:30,383	WARNING	Retryable error. 8 try(s) remaining. Send message was not acknowledged by peer. CHANNEL_EVENT(channel_number=0, msg_id=1, msg_code=6)
[MainThread]	2017-11-26 17:32:30,762	INFO	A302: Finished download. 227/227
[MainThread]	2017-11-26 17:32:31,893	INFO	Closing session.
[MainThread]	2017-11-26 17:32:32,172	INFO	Excuting plugins.
[MainThread]	2017-11-26 17:32:32,173	INFO	TcxPlugin: processing /home/mark/.antd/0xe579eb79/raw/20171126-173214.raw.
[MainThread]	2017-11-26 17:32:32,173	DEBUG	A000: executing product request
[MainThread]	2017-11-26 17:32:32,173	DEBUG	init_device_api: product_id=1250, software_version=2.30, description=['Forerunner 410 Software Version 2.30']
[MainThread]	2017-11-26 17:32:32,173	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]	2017-11-26 17:32:32,173	DEBUG	Using link protocol L001.
[MainThread]	2017-11-26 17:32:32,174	DEBUG	Using command protocol A010.
[MainThread]	2017-11-26 17:32:32,174	DEBUG	Using A302['D311', 'D1018'] for: get_trks
[MainThread]	2017-11-26 17:32:32,174	DEBUG	Using A906['D1015'] for: get_laps
[MainThread]	2017-11-26 17:32:32,174	DEBUG	Using A1000['D1009'] for: get_runs
[MainThread]	2017-11-26 17:32:32,174	DEBUG	A1000: executing transfer runs
[MainThread]	2017-11-26 17:32:32,174	DEBUG	A906: executing transfer laps
[MainThread]	2017-11-26 17:32:32,174	INFO	A906: Starting download. 1 record(s)
[MainThread]	2017-11-26 17:32:32,174	INFO	A906: Starting download. 5 record(s)
[MainThread]	2017-11-26 17:32:32,174	INFO	A906: Finished download. 6/5
[MainThread]	2017-11-26 17:32:32,174	WARNING	A906: Record count mismatch, expected(5) != actual(6)
[MainThread]	2017-11-26 17:32:32,175	DEBUG	A301: executing transfer tracks
[MainThread]	2017-11-26 17:32:32,175	INFO	A302: Starting download. 227 record(s)
[MainThread]	2017-11-26 17:32:32,178	INFO	A302: Finished download. 227/227
[MainThread]	2017-11-26 17:32:32,178	DEBUG	extract_runs: found 0 run(s)
[MainThread]	2017-11-26 17:32:32,178	DEBUG	Executing 'gupload -v 1 -u NNNNNN -p XXXXXX '
usage: gupload [-h] [-a ACTIVITY_NAME] [-t ACTIVITY_TYPE] [-u USERNAME]
               [-p PASSWORD] [-v {1,2,3,4,5}]
               paths [paths ...]
gupload: error: too few arguments

Something perhaps suspicious there, which I don't remember seeing before, are the two Record count mismatch, expected(5) != actual(6) errors - perhaps those are related to the problem?

I suspect that, since the raw file seems too small to have my run data in it, it's of limited use, but just in case, I've made a copy of that here: http://sphinx.mythic-beasts.com/~mark/20171126-175502.raw

I'm using version b03a810 of python-ant-downloader

As I said, downloading data from this watch normally works fine, and I haven't changed my set-up at all recently. If you could suggest a possible fix, that would be very much appreciated! (I wanted to try redownloading the data, but ant-downloader.py -f didn't seem to force that as I'd expected.) Many thanks, Mark

mhl commented

Hi @braiden. Thanks for the suggestion - I enabled Menu -> Settings -> ANT+ Computer -> Force Send, re-ran ant-downloader.py and that run that failed to download previously was successfully fetched this time.