1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
// -*- mode: outline ; coding: utf-8-unix -*-
** HOW TO HELP IF YOUR WATCH'S PROTOCOL IS NOT PROPERLY HANDLED BY ANT+minus
* In this case your device talks a different dialect of ANT/ANT+/ANT-FS that we've seen so far.
* To solve this, we'll need a dump of the USB communication between your watch (USB2ANT stick) and garmin's ant agent. This may be facilitated in a VirtualBox environment.
* Install e.g. VirtualBox on linux, including proprietary oracle usb extensions
* Install win xp in vbox, set up usb filter to pass through all devices
* Install garmin's ant agent in virtual xp, but do not start it!
* Plug in your USB2ANT stick to the host, make sure the cp201x driver didn't grab it, by unloading cp201x kernel module.
* Under linux host, figure out usb bus address of your USB2ANT stick: "lsusb"
* Increase usbmon lower threshold for message truncation to say 100 characters: ./usbmon -i <USB bus> -fu -s 100
* Start capturing usb traffic under linux host: cat /sys/kernel/debug/usb/usbmon/6u > ~/ant-usb-log-001.usbmon
* Start garmin's ant agent in virtual xp. Once the download is done, quit ant agent. Also terminate the above "cat" process. The dump of your usb communication is not saved to ~/ant-usb-log-001.usbmon.
* decode the ANT traffic from the usb packets: ./antpm-usbmon2ant --op=parse ~/ant-usb-log-001.usbmon
* At this point, you can either start debugging antpm and try to see where our code sends/awaits different replies/messages, or you may provide the .usbmon file to the maintainers to do the same. Note that the dump file most likely contains your activities from your watch, and could be of personal nature!!
** RELEASE CHECKLIST
* make sure all files are listed in scripts/origsrc-file-list
* update version info in src/VERSION
* optional: update version minor in scrips/make-changelog
* run scripts/make-changelog
* run scripts/make-tarball
* run scripts/deb
* commit above changes and tag respective version
** FEATURES
* usbmon => ANT message decoder
* many ANT,ANT-FS messages implemented
* cp201x linux GPLv2 kernel driver partially ported to userspace and windows
* ANTFS linking
* ANTFS S/N retrieval
* ANTFS authentication
* ANTFS download file
* ANTFS erase file
* It generally helps to keep the watch close (20-30 cm) to the USB2ANT dongle while communicating.
** TODO
* capture ant agent log: for downloading all, for erasing, for uploading
* capture ant agent log: for firmware upload
* fix all TODO/FIXME in the code
* resume downloader connections
* split ANT framing / messaging functionality into two separate classes
* send specific messages at the channel period??
* ANTFS erase downloaded files (check ant agent logs for this)
* ANTFS upload more waypoints??
* Ctrl-C doesn't abort file downloads, as those are done in a tight loop inside the state machine...
* download progress indicator, based on file sizes from directory file
* if beacon says Busy, try waiting?
** DONE
* ANTFS pairing
* eliminate delays due to threading
* check CRC during downloading
* fix delays in threading, avoid waiting at exit
* directory parsing
* decoding downloaded FIT workout files
* download a particular file
* write all logs into %DATE% folder
* save .fit files with correct date
** ISSUES
*** usbmon truncates output to 32 bytes http://mrmekon.tumblr.com/post/5146693470/usbmon-truncation
The USB debug driver, usbmon, truncates the ‘u’ format devices to 32 bytes by default!
It turns out this can be set with an ioctl. Which doesn’t work too well with cat, our information-gatherer of choice.
But there’s a nice guy at Red Hat who makes a proper usbmon command-line utility that supports all of its various ioctl options. Using his ‘usbmon’ tool, you can get a nice, untruncated output with:
./usbmon -i <USB bus> -fu -s 100
** LINKS
http://gitorious.org/~tade
http://www.andreas-diesner.de/garminplugin/doku.php
http://code.google.com/p/linuxgarminimport/
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=124627&whichpage=3
http://dropoff.tumblr.com/post/505336492/garmin-connect-running-on-ubuntu-linux
http://cgit.get-open.com//cgit.cgi/gant/
git://get-open.com/gant
http://www.thefloatingfrog.co.uk/geek-hobbies/garmin-forerunner-305405-musings/#comment-3432
http://code.google.com/p/antwireless/w/list
http://code.google.com/p/garmintools/
http://git.debian.org/?p=pkg-running/garmin-forerunner-tools.git;a=summary
http://www.usblyzer.com/download.htm
http://www.sbrk.co.uk/t6/
http://developer.garmin.com/forum/viewtopic.php?t=354
http://www.garmin.com/support/pdf/IOSDK.zip
http://bryars.eu/projects/garmin-forerunner-decoder/
http://www.waite.net.nz/downloads/
http://www.waite.net.nz/downloads/garmin-upload-tools_1.4.0.tar.gz
https://forums.garmin.com/showthread.php?t=14598 Getting The Garmin Forerunner 410 to work in UBUNTU
http://developer.garmin.com/web/communicator-api/
http://packages.debian.org/source/sid/garmin-ant-downloader
http://vusb-analyzer.sourceforge.net/
http://frant.sf.net
http://braiden.org/?p=293
http://www.youtube.com/playlist?list=PLA4AA10B39DB19291&feature=plcp
https://github.com/braiden/python-ant-downloader
https://github.com/Tigge/Garmin-Forerunner-610-Extractor
http://sportwatcher.googlecode.com/svn/trunk/
http://sourceforge.net/projects/pytrainer/
http://sourceforge.net/projects/turtlesport/?source=recommended
http://sourceforge.net/projects/sportwatcher/?source=recommended
http://sourceforge.net/projects/sportstracker/?source=recommended
http://goldencheetah.org/
|