Snigelson / pytimex

Python library and utilities for generating and transferring data to Timex Data Link smartwatches
12 stars 1 forks source link

Ironman Support #1

Open Shadow67a opened 2 years ago

Shadow67a commented 2 years ago

Can you please add support to the timex Ironman Triathlon?

Snigelson commented 2 years ago

The Ironman watches require a newer software version which is not compatible with the older watches. It seems to not play nice with my notebook adapter emulator so currently I have no way of logging data. I'll have to look into that.

ahhuhtal commented 2 years ago

David Fries' additions to the datalink utility could be used as a starting point for Ironman support. Getting an implementation acually working most likely requires someone with an ironman and willingness to troubleshoot.

The ironman has a somewhat different function set, so not sure how well it could be integrated.

Shadow67a commented 2 years ago

But I cannot find the ironman's protocol in david's repo, I tried sending bits manually but it always errors out on "version mismatch"

ahhuhtal commented 2 years ago

Can you describe in more detail what you are doing? How are you generating the data, and how are you sending the data to the watch?

The current version of the Blaster does not support the Ironman PC software, and the current version of the Python library does not support Ironman watch.

I think it could be possible to add support for the Ironman PC software to the Blaster fairly easily. Adding Ironman support to the library itself is much more involved.

Snigelson commented 2 years ago

I'll take a closer look at the ironman software this weekend, if I have the time. They might have added a more involved detection method, and if there is no way around it the next step would be to extract the data from the VGA signal directly. Hard, but not impossible

ahhuhtal commented 2 years ago

I've added in antti-wip branch a modification of the timex_notebook_adapter.py script, which should work with the Ironman PC software. The handshake is only slightly different.

Snigelson commented 2 years ago

As it turns out, the notebook adapter emulator works perfectly fine with the "French version" of the Ironman software from Timex's download page, since that uses the same libraries as the other Datalink software.

However the newer 32-bit Ironman software uses updated libraries. These seem to expect that the notebook adapter returns the transmitted character always, while the older software didn't care. Therefore, replying with "?M764" instead works perfectly fine with all versions.

It looks like the library also looks for the string "M764 rev 764100". I can't figure out what it does different if it finds it, though. Also, where did you find the string "M764 rev 764002"?

ahhuhtal commented 2 years ago

Ah. I didn't see that difference to my implementation :-). I hadn't had time to test the script yet, since so far I've run all my tests with the Timex software purely in a virtual machine.

For my notebook adapter simulation, I have the virtual machine connect its serial port to a named unix socket, to which I then connect with my script. With the implementation I had, the Ironman software worked right out of the box. Quickly looking through your code, I thought the ID string was the only difference :-)

I got the ID string from famiclone6502 whom I helped to implement the proper bit timings for his open source replacement for the notebook adapter. Something very similar to your Blaster implementation.

Snigelson commented 1 year ago

Update: I just got a hold of an Ironman Triathlon, so now I might actually get around to this!