Arduino Keeps Your Classic Timex Datalink In Sync

A Timex Datalink smartwatch next to an Arduino

The Timex Datalink was arguably the first usable smartwatch, and was worn by NASA astronauts as well as geek icons like Bill Gates. It could store alarms, reminders and phone numbers, and of course tell the time across a few dozen time zones. One of the Datalink’s main innovations was its ability to download information from your PC — either through flashing images on a CRT monitor or through a special adapter plugged into a serial port.

With CRTs thin on the ground and original serial adapters fetching ludicrous prices online, classic Datalink users today may find it hard to keep their watches in sync with their Outlook calendars. Fortunately for them, [famiclone] came up with a solution: a DIY Datalink adapter based on an Arduino. It works the same way as Timex’s serial adapter, in that it receives data through the computer’s serial port and transmits it to the watch by flashing a red LED.

Updating your watch does require the use of the original Datalink PC software, which only runs on classic operating systems like Windows 95 or 98, so you’ll need to keep a copy of such an OS running. Luckily, it has no problem with virtual machines or USB COM ports, so at least you don’t need to keep vintage PC hardware around. Then again, whipping out a 1995 Pentium laptop to update your Timex watch would make for the ultimate geek party piece.

Love classic geeky watches? Check out this featured article we did on them a few years ago. If you’re interested in using computer monitors to transmit data optically, we’ve covered a few projects that do just that.

18 thoughts on “Arduino Keeps Your Classic Timex Datalink In Sync

  1. You would have thought that reverse engineering the data format rather than just the flashy light bit might have been a priority, allowing software to be written for a more modern platform.

    1. It’s been done already, so long ago that it predates some HaD editors.

      Here’s a page from the mid ’90s where someone has published the transport protocol as well as details on writing custom apps to run on the 6809 powering the watch: http://teryx.bobdbob.com/~protius/timex/

      Someone (relatively) recently wrote a Python package to do exactly what you describe: https://github.com/Snigelson/pytimex

      I had a less capable Ironman model that didn’t support “wristapps”, and I remember the monitor syncing to be finicky. It depended heavily on sharp light transitions that only CRTs could provide, excluding users of laptops of the time. They had a dongle that plugged in your serial port that would blink the equivalent protocol over an LED for those cases.

    2. I had actually based my blinking code on the documentation by Antti Huhtala who also wrote their own open source sync software:
      https://github.com/ahhuhtal/timex_datalink_uploader

      There’s certainly a use case for both, as Antti has been able to do some amazing development tricks for the watch that the official software can’t do.

      My primary goal was to replace the original adapter, mainly because I prefer using the original software with my old Windows 98 laptop. But, dragging out a CRT every time I wanted to sync was becoming a pain. I had a spare Arduino, and thought it might be useful for others if I recreate the adapter with easy to find parts.

      I had also been using the laptop to mess with the Motorola 6805 programming tools for the watch. Using the official software to upload the custom apps was just easier overall for me.

      1. In Linux using oldschool xFree86 it used to possible to manually configure screen timing. So maybe enough of those features exist for this to still be viable on Linux (with hardware old enough to have a native VGA/DVI-I port)

    1. The data is sent in pulses of light and dark on a CRT and relies on very fast, very sharp cutoffs. LCDs at the time were unable to refresh quickly enough. I do wonder about the new high refresh rate LCDs nowadays…

      1. LCDs update screen at a time, CRTs paint the image line at a time, so you get a sharp pulse when a single pixel is painted. You can use horizontal and vertical timing information to determine WHERE on a CRT is currently being painted (which was how a light gun worked) using a single phototransistor. LCDs would at best manage 50 or 60 bits per second because of this, where a CRT could manage thousands of bits per second (if the whole screen was used).

    1. I believe the one on the Windows 95 CD predates the Notebook Adapter, so the link you provided is the best version to use.

      While the software runs on 3.x or even Wine, I haven’t verified if it works with my solution. Same for NT/2000. I’ll update the page if it’s ever confirmed.

        1. When this was first written, the Pico version didn’t exist yet. But if you click the link in the article to the Github page, then View Code, there’s a UF2 in the Pico directory. No extra hardware is needed if you use the original non-wireless model, and you can now directly use a modern Windows version with the original software when using winevdm.

  2. I have one & used it back in the day. There was a Linux application that would flash the CRT. I used it to copy my ical (a tcl/tk calendar program!) to the watch. I was running Mandrake or Red Hat 6 IIRC.

    Back then, people had dumped the whole ROM, created custom wrist apps. There was a whole community hacking it.

  3. So teryx.bobdbob.com is my computer… Seeing a link to one’s own page is always an ego trip. (-:

    And I’m still wearing that watch, and using that software.

    The Horrible Hack ™ is sending 2048 bps serial by sending 0xFF and 0x00 at 115200 bps. A “bit” is 7 or 8 bytes, send a long one every once in a while, and it’ll work. The error doesn’t accumulate enough before the next start bit resets the clock.

Leave a Reply to Josiah GouldCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.